【发布时间】:2010-11-24 22:38:16
【问题描述】:
我知道地图尚未准备好进行排序。它针对快速和随机密钥访问进行了大量优化,实际上不支持std::sort。
我目前的问题是我有一个完整的map<std::string,int>,我不会再使用它了。我只需要以value(int)的顺序提取10对并销毁即可。
如果可能的话,最好的办法是将它就地排序,然后迭代 10 次,但这显然不是解决方案。
我正在尝试不同的解决方案,例如通过 multimap<int,string>(允许重复键),但我想知道是否有更优雅的解决方案,尽可能使用 stl 算法。
编辑:
我使用地图是因为在 99% 的时间里,我都需要它作为地图:快速键查找以增加值。当我不再需要地图时,只需要一种稍后按值顺序提取的好方法。
目前的方法应该是:
-
std::copymap(std::string,int)到vector(pair(std::string,int)) - 对向量进行排序
- 获取前 10 个值
- 销毁矢量和地图
【问题讨论】:
-
您的要求对我来说非常不清楚。 IIUC,您需要在地图中按它们的值而不是它们的键来查找 10 个条目吗?一旦你拥有它们,你将如何处理它们?我问是因为“破坏”是一个模糊的术语,我无法猜测
std::pair<std::string,int>的含义。是否要从地图中删除? (可能不需要,因为你说你不再需要地图了。但是还有什么?) -
地图将被销毁,所以我不在乎它以后会发生什么,只需要有这 10 个值
标签: c++ sorting dictionary stl