C/C++教程

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;
这篇关于c++中unordered_map按照value排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!