编程语言
首页 > 编程语言> > c++中unordered_map按照value排序

c++中unordered_map按照value排序

作者:互联网

整体思路:

  1. 利用sort函数 -- 但是sort只能对列表类(比如vector)的进行排序,key-value不行,所以要搞个vector
  2. pair(也就是一对key-value)是stl标准模板类,可以作为item放入vector中
  3. 重写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