c++的sort函式只能用於順序容器,比如vector等。對於關聯容器,map、set是以key為有序的,unordered_map等是無序的。
有些情況下我們需要用map的value值來排序,比如說按數值個數排序
c++的sort是有三個引數
void sort (randomaccessiterator first, randomaccessiterator last, bool comp);
(3)第三個引數comp是排序的方法:可以是從公升序也可是降序。如果第三個引數不寫,則預設的排序方法是從小到大排序。
第三個引數需要自定義。
bool cmp(type a, type b)
比較a和b,如果是想公升序,那麼就定義當ab的時候返回true;
如果想讓map按照value排序,且value相等時以key排序,那麼我們需要將map元素存放於vector中,再使用自定義sort函式,滿足我們的預期
vector> veccount;
for(map::iterator it = count.begin();it!=count.end();it++)
sort(veccount.begin(),veccount.end(),cmp);
cmp我們需要按照要求進行定義
bool cmp(paira,pairb)
C map根據value排序
改變map根據key值排序策略可以過載 運算子 希望使用map根據value排序 map中元素型別是pair,第乙個想到的是過載pair的 運算子 但是標頭檔案為pair過載了 運算子 templateinline bool operator x,const pair t1 t2 y 直接過載的話,...
c map 對key和value排序
1.對key值排序 使用提供的less grater或自定義排序 include include include include include include std greater using namespace std 按key的長度公升序排列 struct cmpbykeylength in...
C map按key或按value排序
1 map預設按照 key 從小到大排序 mapint hash 等價於 mapint,less hash 2 map按照 key 從大到小排序 mapint,greater hash 示例 mapint,greater m 預設 map m m you 2 m we 3 m they 1 cout...