1. 程式人生 > 其它 >c++ map排序

c++ map排序

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

結果

在這裡插入圖片描述