将map中的元素用vector<pair<type1,type2>>的形式存储,利用vector可以自定义排序方式,定义排序操作。 例如:有一个map,其元素为形如name:score的形式,现要求按分数排序。
#include<vector>
#include<map>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
map<string, int> name_scores;
name_scores["Li"] = 90;
name_scores["Zhang"] = 80;
name_scores["Wang"] = 95;
name_scores.insert(make_pair("Zheng", 93));
name_scores.insert(make_pair("Guo", 85));
cout << "排序前" << endl;
for (auto m : name_scores)
{
cout << m.first << ":" << m.second << endl;
}
vector<pair<string, int>> name_scores_vec;
for (auto m : name_scores)
{
name_scores_vec.push_back(make_pair(m.first, m.second));
}
name_scores.clear();
sort(name_scores_vec.begin(), name_scores_vec.end(), [](const pair<string, int>& a, const pair<string, int>& b)
{
return a.second < b.second;
}
);
cout << "排序后" << endl;
for (auto s : name_scores_vec)
cout << s.first << ":" << s.second << endl;
return 0;
}
结果如下:
|