C++中 <unordered_map>是一个无序的关联容器,它不支持直接按值排序,则无法使用<algorithm>中的sort算法进行排序,所以我们可以换个思路,把哈希表中的元素全部提取出来装入<vector>容器中,再排序;
#include <iostream>
#include <unordered_map>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<int, int> PII;
bool cmp(pair<int, int> a, pair<int, int> b)
{
return a.first < b.first;
}
int main(void)
{
unordered_map<int, int> ums;
ums[1] = 5;
ums[2] = 20;
ums[3] = 18;
cout << "排序前" << endl;
for(auto u : ums) cout << u.first << " " << u.second << endl;
puts("");
vector<PII> vs;
for(auto u : ums) vs.push_back({u.first, u.second});
// 排序
sort(vs.begin(), vs.end(), cmp);
cout << "排序后" << endl;
for(auto v : vs) cout << v.first << " " << v.second << endl;
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/2709a34186e682be54afa0bf8b33ddaf.png)