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 pairstring, int PAIR;
int cmp(const PAIR x, const PAIR y)//针对PAIR的比较函数
{
return x.second y.second; //从大到小
}
int main() {
mapstring,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中
vectorPAIR 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].secondendl;
}
return 0;
}
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。