map排序方法

来源:互联网 发布:mac可以下载office吗 编辑:程序博客网 时间:2024/06/05 09:25

map的<key,value>进行排序:

1.key排序是默认的,从小到大默认排序

2.value需要借助vector进行排序,首先把map中数据放到vector中,然后利用sort对vector排序


struct User{int score[MaxK];int sum;int full_cnt;int rank;};map<int,User> record;vector<pair<int,User>> result;sortMap(record,result);//排序函数如下int cmp(const pair<int,User> &p1,const pair<int,User> &p2){if(p1.second.sum==p2.second.sum){if(p1.second.full_cnt==p2.second.full_cnt){return p1.first<p2.first;}else{return p1.second.full_cnt>p2.second.full_cnt;}}else{return p1.second.sum>p2.second.sum;}}void sortMap(map<int,User> &m,vector<pair<int,User> > &vec){map<int,User>::iterator it;for(it=m.begin();it!=m.end();it++){vec.push_back(make_pair(it->first,it->second));}sort(vec.begin(),vec.end(),cmp);}



0 0
原创粉丝点击