map默认是按key值从小到大排序的,先改为按value排序。
基本思路就是:想直接用sort排序是做不到的,sort只支持数组、vetctor等的排序,所以我们可以先把map装进pair里,然后再放入vector,自定义sort实现排序
#include<cstdio>
#include<algorithm>
#include<map>
#include<iostream>
#include<vector>
using namespace std;
typedef pair<int, int> pii;
map<int, int> mp;
map<int, int>::iterator mit;
vector<pii> vc;
vector<pii>::iterator vit;
bool cmp(pii a, pii b) {
return a.second < b.second;
}
int main() {
mp[1] = 11;
mp[2] = 2222;
mp[3] = 333;
mp[4] = 4;
mp[0] = 888888;
for(mit=mp.begin(); mit!=mp.end(); mit++) {
vc.push_back(pii(mit->first, mit->second));
cout<<mit->first<<" "<<mit->second<<endl;
}
puts("-------------------------------------");
sort(vc.begin(), vc.end(), cmp);
for(vit=vc.begin(); vit!=vc.end(); vit++) {
cout<<vit->first<<" "<<vit->second<<endl;
}
return 0;
}