1. 程式人生 > >c++ map按value值排序

c++ map按value值排序

map預設是按key值從小到大排序的,先改為按value排序。

基本思路就是:想直接用sort排序是做不到的,sort只支援陣列、vetctor等的排序,所以我們可以先把map裝進pair裡,然後再放入vector,自定義sort實現排序

#include<cstdio>
#include<algorithm>
#include<map>
#include<iostream>
#include<vector>

using namespace std;
typedef pair<int, int> pii;

map<int, int> mp;
map<int, int>::iterator mit;

vector<pii> vc;
vector<pii>::iterator vit;
bool cmp(pii a, pii b) {
	return a.second < b.second;
}
int main() {
	mp[1] = 11;
	mp[2] = 2222;
	mp[3] = 333;
	mp[4] = 4;
	mp[0] = 888888;
	for(mit=mp.begin(); mit!=mp.end(); mit++) {
		vc.push_back(pii(mit->first, mit->second));
		cout<<mit->first<<"  "<<mit->second<<endl;
	}
	puts("-------------------------------------");
	sort(vc.begin(), vc.end(), cmp);
	for(vit=vc.begin(); vit!=vc.end(); vit++) {
		cout<<vit->first<<"  "<<vit->second<<endl;
	}
	return 0;
}