當前位置:成語大全網 - 書法字典 - 如何在C++中按值對地圖進行排序

如何在C++中按值對地圖進行排序

Map按值排序map的兩個值分別是鍵值和值。映射是按鍵值排序的,因此無法直接對值進行排序。您可以將映射的鍵和值組合成壹個新的結構,使用PAIR類型的向量來存儲映射中的所有內容,並根據值對向量進行排序。按順序輸出鍵。

//按值排序的地圖

#包含?& ltiostream & gt

#包含?& lt字符串& gt

#包含?& ltvector & gt

#包含?& lt地圖& gt

#包含?& lt算法& gt

使用?名稱空間?std

typedef?pair & lt字符串,?int & gt?配對;

int?CMP(const?成對& amp?x,?const?成對& amp?y)//對的比較函數

{

回歸?x .秒?& gt?y.second//由大到小

}

int?main()?{

地圖& ltstring,int & gt?nmap?

nmap【“利民“】?=?90;

nmap【“zilin mi“】?=?79;

nmap【“BoB“】?=?92;

nmap . insert(make _ pair(“Bing“,99);

nmap . insert(make _ pair(“Albert“,86);

//將地圖中的元素轉儲到向量中?

向量& ltPAIR & gt?vec(nmap . begin()、nmap . end());

sort(vec . begin(),?vec.end(),CMP);?//排序

為了什麽?(size_t?我?=?0;?我?!=?vec . size();?++i)?{//輸出

cout?& lt& lt?vec【I】。首先?& lt& lt"?"& lt& ltvec【I】。第二& lt& ltendl

}

回歸?0;

}