如何实现 STL map 按值排序?
比如我有一张 map m
:
map<int, int> m;
m[1] = 10;
m[2] = 5;
m[4] = 6;
m[6] = 1;
我想按 m
的值对该 map 进行排序。所以,如果我打印 map ,我想得到如下结果:
m[6] = 1
m[2] = 5
m[4] = 6
m[1] = 10
如何以这种方式对 map 进行排序?有什么方法可以用排序值处理键和值?
最佳答案
将所有键值对转储到 set<pair<K, V> >
中首先,set
由一个小于仿函数构造,该仿函数仅比较该对的第二个值。这样,即使您的值并非完全不同,您的代码仍然有效。
或将键值对转储到 vector<pair<K, V> >
,然后使用相同的小于仿函数对该 vector 进行排序。
关于c++ - 如何按值对 STL 映射进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699060/