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