對map進行可操作排序

2021-08-14 23:36:48 字數 1361 閱讀 9720

c++stl裡的map容器是個很好的東西,他的定義是這樣的:

template < class

key, class t, class

compare = less,

class allocator = allocatorconst

key,t> > > class map;

我大多數情況都只是關注了他的前兩個引數,乙個是key,乙個value,後面的那個less是用來比較用的,最後面那個我暫時用不著,那是用來儲存分配模型的。

我通過乙個題目來加深印象吧:

sdut2104-字元統計3

problem description

給定乙個字串(假設字串中只包含英文大小寫字母),排序輸出出現次數最多的三個字元,如果有兩個字元出現次數相等,輸出字母序列靠前的(提示這裡指的是字母在ascii碼表中的順序),如果不足三個,把現有的輸出。例如:對於字串mddfreee,輸出:(e,3)(d,2)(f,1)。輸入aab,輸出 (a,2)(b1),注意後台測試資料的字串可能會非常長。

input

第一行為乙個整數n,代表有幾組輸入。接下來n行分別代表待統計的字串。

output

對於給定的每次輸入,輸出結果。每個例項佔一行格式如下。

example input

4 abcde

assssddfffrt

baabbbaaaaa

abexample output

(a,1)(b,1)(c,1)

(s,4)(f,3)(d,2)

(a,7)(b,4)

(b,1)(a,1)

解法很多,但我還是最喜歡用stl裡的東西來做,總的思路就是用vector來對pair進行排序;

#include

#include

#include

#include

#include

using

namespace

std;

typedef pair pair;

bool cmp(pair a, pair b)

int main(void)

else

cout

<< endl;

}vec.clear();

}system("pause");

return

0;}

這裡面用的是函式方式不是類方法,當然可以這麼寫

struct cmpbyvalue   

};

過載一下括號運算子就好,這裡只是做了下簡單的用法介紹,更深的東西還是需要去進一步學習的。

對map集合進行排序

在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap treemap hashtable linkedhashmap。其中這四者的區別如下 簡單介紹 hashmap 我們最常用的map,它根據key的hashcode值來儲存資料,根據key可以...

對map集合進行排序

今天做統計時需要對x軸的地區按照地區 areacode 進行排序,由於在構建xmldata使用的map來進行資料統計的,所以在統計過程中就需要對map進行排序。在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtab...

如何對map進行排序

常用的map有hashmap,treemap,linkedhashmap hashmap 最常用的map,根據key的hashcode值來儲存資料,根據key可以直接獲取它的value,具有很快的訪問速度。hashmap最多隻允許一條記錄的key值為null 多條會覆蓋 允許多條記錄的value為n...