由于需要用到map的自定义排序,所以去学习了下,一起分享给大家看看,自定义排序的关键在于下列代码的自定义函数的cmp里面,可以选择自己想要的排序方式,我这个的自定义排序是先根据value的降序进行排序,如果遇到value的值一样就按照key的升序进行排序,贴出我的代码。
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
map<string,int> mp;
bool cmp(const pair<string,int> &a,const pair<string,int> &b){
if(a.second==b.second){
return a.first<b.first;
}else{
return a.second>b.second;
}
}
int main(){
mp["aa"]=6;
mp["bb"]=999;
mp["cc"]=99;
mp["dd"]=100;
mp["ee"]=999;
vector<pair<string,int> > vec;
for(map<string,int>:: iterator it=mp.begin();it!=mp.end();++it){
cout<<"key="<<it->first<<" "<<"value="<<it->second<<endl;
vec.push_back(make_pair(it->first,it->second));
}
cout<<"-----------------------"<<endl;
sort(vec.begin(),vec.end(),cmp);
for(vector<pair<string,int> >:: iterator it=vec.begin();it!=vec.end();++it){
cout<<"key="<<it->first<<" "<<"value="<<it->second<<endl;
}
return 0;
}