因为unordered_map本身不能使用sort排序(具体因为啥不能,自己搜索哈),因此可以使用以下方法进行自定义排序。(主要是为了自己记忆,老忘记)
#include<iostream>
#include<algorithm>
#include<vector>
#include<unordered_map>
using namespace std;
int main() {
unordered_map<int, int>m;
vector<pair<int, int>> vec;
for (int i = 0; i < 10; i++) {
m[i]++;
}
//vec.push_back(pair<int, int>(1, 3));
//vec.push_back(pair<int, int>(2, 4));
//vec.push_back(pair<int, int>(3, 5));
//vec.push_back(pair<int, int>(4, 2));
//vec.push_back(pair<int, int>(5, 1));
for (auto it:m) {
vec.push_back(it);
}
sort(vec.begin(), vec.end(), [](pair<int, int>&a, pair<int, int>&b) {return a.first>b.first; });
for (auto it = vec.begin(); it != vec.end(); it++) {
cout << it->first<<" "<<it->second << endl;
}
return 0;
}
--------------------------------------------------------------/**/或者**
#include<iostream>
#include<algorithm>
#include<vector>
#include<unordered_map>
using namespace std;
bool compare_map(const pair<int, int>&a, const pair<int, int>&b) {
return a.first > b.first;
}
int main() {
unordered_map<int, int>m;
vector<pair<int, int>> vec;
for (int i = 0; i < 10; i++) {
m[i]++;
}
//vec.push_back(pair<int, int>(1, 3));
//vec.push_back(pair<int, int>(2, 4));
//vec.push_back(pair<int, int>(3, 5));
//vec.push_back(pair<int, int>(4, 2));
//vec.push_back(pair<int, int>(5, 1));
for (auto it:m) {
vec.push_back(it);
}
sort(vec.begin(), vec.end(), compare_map);
for (auto it = vec.begin(); it != vec.end(); it++) {
cout << it->first<<" "<<it->second << endl;
}
return 0;
}