**如下:
#include
#include
#include
#include
using
namespace std;
typedef pair
int> fre;
bool
comless
(const fre &a,
const fre &b)
bool
comgreater
(const fre &a,
const fre &b)
intmain
(int argc,
char
const
*ar**)
cout << endl;
// 按key遞減
mapint,greater
> key_decre;
key_decre[
"bb"]=
1;key_decre[
"aa"]=
2;key_decre[
"cc"]=
3;for(iter = key_decre.
begin()
;iter != key_decre.
end(
);iter++
) cout << endl;
// 按value遞增
vector
vec_incre
(key_decre.
begin()
,key_decre.
end())
;sort
(vec_incre.
begin()
,vec_incre.
end(
),comless)
; vector
::iterator it;
for(it = vec_incre.
begin()
;it != vec_incre.
end(
);it++
) cout << endl;
// 按value遞減
vector
vec_decre
(key_decre.
begin()
,key_decre.
end())
;sort
(vec_decre.
begin()
,vec_decre.
end(
),comgreater)
;for
(it = vec_decre.
begin()
;it != vec_decre.
end(
);it++
) cout << endl;
return0;
}
輸出如下:
**解釋:
正常情況下,map的內部順序為按照key值遞增。
在定義map的時候,第三個引數設定為greater時(t為key的型別),map的內部順序為按key的遞減排序。
若要按照value進行排序,只能首先將map轉化為vector,然後再使用sort,同時自定義sort的第三個引數,compare函式。
Map排序(按key排序,按value排序)
主要分兩種,按鍵排序 按值排序。而且,按key排序主要用於treemap,而按value排序則對於map的子類們都適用。按key排序主要用於treemap,可以實現按照key值的大小,在物件插入時直接插入到合適的位置,保持map的順序性。來看treemap的建構函式 treemap comparat...
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學習。假如...