【发布时间】:2013-07-31 07:13:55
【问题描述】:
如何根据值获取 std::map 的前 n 个键?
有没有一种方法可以让我得到一个列表,例如前 10 个键值最大的键值?
假设我们有一张类似这样的地图:
mymap["key1"]= 10;
mymap["key2"]= 3;
mymap["key3"]= 230;
mymap["key4"]= 15;
mymap["key5"]= 1;
mymap["key6"]= 66;
mymap["key7"]= 10;
我只想列出前 10 个键的列表,这些键与其他键相比具有更大的价值。 例如,我们的 mymap 的前 4 名是
key3
key6
key4
key1
key10
注意:
这些值不是唯一的,实际上它们是每个键的出现次数。我想得到一个最常出现的键的列表
注 2:
如果 map 不是一个好的候选人,你想建议什么,请按照 c++11 做,我当时不能使用 boost。
注3:
如果使用std::unordered_multimap<int,wstring>,我还有其他选择吗?
【问题讨论】:
-
也许 std::map 不是你想要的。
-
Boost.Bimap 允许你使用值类型作为键
-
对此有任何 c++11 解决方案吗?我当时不能使用 boost