map key值自定義排序

2021-06-23 00:20:50 字數 866 閱讀 9249

c++**  

mapmymap;  

for (map::iterator it = mymap.begin(); it != mymap.end(); it++)   

上述示例**中,key的訪問順序為keytype預設的由小到大順序。

當keytype為string時,則按照string的預設比較函式(ascii)排序;

當keytype為int時,則按照int的大小順序排序;

如何自定義排序函式?

定義如下map容器:

c++**  

mapint> mymap;  

key為string型別,mymap的key預設按照string的比較函式排序,如想按照key的數值進行排序,則應該講如上定義改為:

c++**  

mapint, mycomp> mymap;  

並定義mycomp:

c++**  

struct mycomp   

}  

即可完成map的自定義排序函式。

預設排序函式:

c++**  

mapint> mymap;  

mymap["11"] = 1;  

mymap["1"] = 1;  

mymap["2"] = 1;  

//遍歷mymap,key的輸出順序為:1, 11, 2

自定義排序函式:

c++**  

mapint, mycomp> mymap;  

mymap["11"] = 1;  

mymap["1"] = 1;  

mymap["2"] = 1;  

//遍歷mymap,key的輸出順序為:1, 2, 11

DataGridView自定義排序

net自帶datagridview排序貌似最終都是用datagridview.sort 發現當是用排序後,datagridview將把排序前的行樣式等重置,仔細測試後覺得貌似是排序時datagridview重新繫結了資料來源,具體不得而知.實在沒有辦法破解,我也不想重新寫比較來排序,用了最土的辦法,...

QTableWidget 自定義排序

qtablewidget功能強大,可以在每個格仔裡新增自己的wiget部件。如果想對這些自己新增的widget進行排序有兩種方法。一種是直接設定每個格仔對應的qtablewidgetitem的值,因為qtablewidget預設是據qtablewidgetitem來排序,呼叫的比較函式是 bool ...

python list 自定義排序

看到的乙個知識點,稍加記錄 a 希望將上述的list排序,按照每條記錄中的 score 排序。如果 score 欄位的值相等,則按照 first 的值排序。如果 first 依舊相等,則按照 second 排序。如果 second 相等,則按照 third 欄位的值來排序。a.sort.doc l....