怎么给unordered_map排序
时间: 2023-11-09 09:07:18 浏览: 114
可以使用以下方法给unordered_map排序:
1. 创建一个vector<pair<int, int>>的容器,将unordered_map中的键值对逐个插入到容器中。
2. 使用sort函数对容器中的键值对进行排序,可以自定义排序规则。比如,可以使用lambda表达式作为排序的比较函数,按照值(value)的升序进行排序。
3. 遍历排序后的容器,输出排序结果。
下面是一个示例代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(const pair<int, int>& a, const pair<int, int>& b){
return a.second < b.second;
}
int main (){
unordered_map<int, int> ump;
vector<int> R = {1,2,3,2,2,4,4,1};
for(auto x : R){
ump[x]++;
}
vector<pair<int, int>> b;
for(auto x : ump){
b.push_back(x);
}
sort(b.begin(), b.end(), comp);
for(auto x : b){
cout << x.first << " " << x.second << endl;
}
return 0;
}
```
以上代码中,首先创建了一个unordered_map对象ump,然后使用循环遍历将R中的元素作为键插入ump中,并将对应的值进行自增操作。
接着,定义了一个vector<pair<int, int>>容器b,并使用循环遍历将ump中的键值对逐个插入到容器b中。
最后,使用sort函数对容器b进行排序,排序的依据是比较函数comp,这里按照值(value)的升序进行排序。
最后,使用循环遍历输出排序后的结果。
阅读全文