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