c++ map排序
阿新 • • 發佈:2021-05-14
map排序
在天梯賽的時候,經常遇到擁有多個元素的個體進行排序的問題,大部分情況下考慮使用結構體,但是有時候利用map對映更方便統計資料。例如在統計某些名字的出現次數,個人認為利用map對映更好寫程式碼。
這裡我們用姓名和年齡的對映來舉例,不多說了,直接看程式碼,註釋已經解釋的很清楚了。
程式碼
#include<bits/stdc++.h>
using namespace std;
//利用cmp方法編寫排序規定,這裡我們根據年齡從大到小排序
bool cmp(const pair<string, int>& x, const pair<string, int >& y){
return x.second > y.second;
}
int main(){
//宣告對映姓名和年齡的map
map<string, int> age;
//用下面的五條語句儲存姓名與對應的年齡,而且我們輸入的年齡是無序的
age["XiaoMing"] = 14;
age["XiaoHong"] = 13;
age["WangLei"] = 9;
age["ZhangSan"] = 17;
age[ "LiGang"] = 20;
//用一個動態陣列重新儲存map內的資料,這裡用pair資料型別,將一對值宣告成一個值
vector<pair<string, int>> v(age.begin(), age.end());
//採用sort()對動態數組裡的資料利用cmp的排序規則從大到小的排序
sort(v.begin(), v.end(), cmp);
//依次輸出結果
for(int i=0;i<v.size();i++){
cout << v[i].first << " " << v[i].second << endl;
}
}