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);
}