c++ - 如何按值对 STL 映射进行排序?

标签 c++ algorithm sorting dictionary stl

如何实现 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/

相关文章:

C++11:无法推断模板参数

algorithm - 树排序 : time complexity

Java,二维数组排序

cocoa - 按匹配出现次数对 NSStrings 的 NSArray 进行排序

python - 如何在 Python 中仅对列表中的几个值进行排序

python - 高效搜索大量 URL

c++ - 如何导出从 Visual Studio 中显式实例化的模板派生的类?

c++ - 将外部库添加到当前的 C++ 项目中

java - 尝试使用Java中的递归创建一棵Htree,无法让它完成多个角的操作

algorithm - 为什么或者为什么不在 Raft 实现中使用 RequestVote RPC 作为心跳?