C++中如何给map按值排序

 我来答
fallx
2018-05-31 · TA获得超过5485个赞
知道大有可为答主
回答量:2321
采纳率:73%
帮助的人:725万
展开全部

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式