map按值排序(众所周知map按key排序,但按值怎么排序呢)

map按值排序
map的两个值分别为key值和value值,map是按照key值进行排序的,无法直接对value排序。可以将map的key和value组成一个新的结构PAIR,用一个PAIR型的vector存储map中的所有内容,对vecor按照value值进行排序。按顺序输出key。

//map按值排序
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
 
typedef pair<string, int> PAIR;  
 
int cmp(const PAIR& x, const PAIR& y)//针对PAIR的比较函数
{
     
    return x.second > y.second;  //从大到小
}  
 
int main() {
     
  map<string,int> nmap; 
 
  nmap["LiMin"] = 90;  
  nmap["ZiLinMi"] = 79;  
  nmap["BoB"] = 92;  
  nmap.insert(make_pair("Bing",99));  
  nmap.insert(make_pair("Albert",86));  
  //把map中元素转存到vector中 
  vector<PAIR> vec(nmap.begin(),nmap.end());
  sort(vec.begin(), vec.end(), cmp); //排序
  
  for (size_t i = 0; i != vec.size(); ++i) {
     //输出
       cout << vec[i].first <<" "<<vec[i].second<<endl;  
  }  
 
  return 0;  
}
全部评论

相关推荐

点赞 评论 收藏
分享
09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务