c++中unordered_map按照value排序
作者:互联网
整体思路:
- 利用sort函数 -- 但是sort只能对列表类(比如vector)的进行排序,key-value不行,所以要搞个vector
- pair(也就是一对key-value)是stl标准模板类,可以作为item放入vector中
- 重写sort的compare函数,即可对装有pair对的vector进行排序啦
代码如下:
//初始化一个mp
unordered_map<string, int> mp = {
{"zhangsan", 3},
{"zhaoliu", 5},
{"wangwu", 5},
{"lisi", 4}
};
vector<pair<string, int>> arr;
//把map里的key-value对放入vector中
for(auto it : mp){
arr.emplace_back(it);
}
// 重写compare函数,如果value值相同,则按照key值排序
sort(arr.begin(), arr.end(), [](auto p1, auto p2){return p1.second == p2.second ? p1.first < p2.first : p1.second < p2.second; });
for(auto [key, value]: arr)
cout << key << ' ' << value << endl;
标签:sort,map,arr,c++,second,vector,value,key 来源: https://www.cnblogs.com/doubleyue/p/16575568.html