C map按key或按value排序

2021-10-06 07:17:19 字數 1464 閱讀 9618

(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 <<

"map 按 key 從大到小排序"

<< endl;

for(

auto x : m)

按 value 值排序沒有直接的方法,但我們可以把 map 存到 vector 中,再對 vector 進行自定義排序

因為 vector 是可以借助 cmp 隨意排序的,所以這裡以 value 值從小到大排序為例

定義 vector 的 cmp 函式

bool

cmp(pairint> a, pairint> b)

把 map 存到 vector 中進行排序

mapint> m;

m["you"]=

2;m[

"we"]=

3;m[

"they"]=

1;vectorint>

>

vec(m.

begin()

,m.end()

);sort

(vec.

begin()

,vec.

end(

),cmp)

;

遍歷map,把鍵值對取出來放到乙個vector> tmp裡面,然後對tmp排序

vectorint>> tmp;

for(

auto x : hash) tmp.

push_back()

;sort

(tmp.

begin()

, tmp.

end(),

(vector<

int> a, vector<

int> b)

);

示例**:

#include

#include

#include

#include

using

namespace std;

bool

cmp(pairint> a, pairint> b)

intmain()

Java Map排序 按key和按value

map的排序分為按key排序和按value排序。這裡講講這兩種方法。借助treemap來按key排序。treemap預設按key進行公升序排序。如果想改變預設的順序,定義乙個comparator即可。public static void main string args map.put 101,yu...

map按key和按value排序

看乙個題 查詢和排序 題目 輸入任意 使用者,成績 序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。例示 jack 70 peter 96 tom 70 smith 67 從高到低 成績 peter 96 jack 70 tom 70 smith 67 從低到高 ...

map 按key排序VS按value排序

最近在pat刷題,其中一道題月餅 25 需要用到對 進行排序,但是排序後要用到 對應的總售價。因而可以考慮用關聯容器進行求解,map是比較合適這題的資料結構。map是用來存放鍵值對的資料結構,可以很方便快速的根據key查到相應的value。關於map的詳細定義及用法可以見c stl之map學習。假如...