c++ map按value值排序
阿新 • • 發佈:2019-01-03
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; }