C 中對map按照value進行排序

2021-10-04 05:39:44 字數 1327 閱讀 1338

實現方法:如果想要對map中元素按照value進行排序,先把map的元素按pair形式插入到vector中,再對vecotr進行排序(用乙個自定義的比較函式),這樣就可以實現對map的value排序了。

以下**實現了按照map中的value進行排序的功能,還給出了遍歷map的幾種方式,僅供參考哈,各位。

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

using

namespace std;

typedef

struct my_map_key

return

false;}

}test;

// 自定義map列印函式:使用for_each遍歷列印

inline

void

display

(mapint>

::value_type & v)

// 按照value進行比較

typedef pairint> pair;

bool

cmp_by_value

(const pair& v1,

const pair & v2)

// 按照value進行比較

struct cmpbyvalue};

intmain()

// 題外話:遍歷 map 的兩種方式

/*for_each(m.begin(), m.end(), display);

for (auto iter = m.begin(); iter != m.end(); ++iter)

*/return0;

}

以下是程式的輸出:

m.second =

1 m.first.v2 =

3m.second =

2 m.first.v2 =-3

m.second =

3 m.first.v2 =

32m.second =

4 m.first.v2 =

13m.second =

5 m.first.v2 =

112m.second =

6 m.first.v2 =

44m.second =

7 m.first.v2 =-2

m.second =

8 m.first.v2 =

9

感謝閱讀

C 中實現對map按照value值進行排序

map的兩個值分別為key值和value值,map是按照key值進行排序的,但有時候需要按照value值進行排序,並且按照value的順序輸出key值,排序 如下 typedef pairpair int cmp const pair x,const pair y mapm vectorvec fo...

Map中按照value的大小進行排序

把map中的資料按照value的大小進行排序並輸出是乙個比較常見的需求.思路 1 將map中的所有entry轉化為乙個arraylist list cityinfolist new arraylist cityinfo.entryset 2 呼叫collections.sort 方法,對元素 map...

Map集合按照value和key進行排序

最近由於特殊的業務需求,需要做相關資料排序,下面就貼出其中的將map集合中按照value或者key進行排序的 後面再具體詳說。1 2 map 集合排序3 param map4 return5 6public static extends comparable mapsortmap mapmap 72...