所以我正在玩STL新標準化的unordered_map
。我的代碼是有點這樣的,我只是創建一個unordered_map,填滿它,並把它打印出來:爲什麼我的unordered_map會自行排序?
unordered_map<int,string> m1;
m1[5]="lamb";
m1[2]="had";
m1[3]="a";
m1[1]="mary";
m1[4]="little";
m1[7]="fleece";
m1[6]="whose";
m1[10]="fleecey";
m1[8]="was";
m1[9]="all";
for(unordered_map<int,string>::const_iterator i = m1.begin(); i != m1.end(); ++i)
cout<<i->first<<" "<<i->second<<endl;
然而,輸出我得到正是如此下令:
1 mary
2 had
3 a
4 little
5 lamb
6 whose
7 fleece
8 was
9 all
10 fleecey
但我不想付出代價來訂購我的地圖!這就是爲什麼我使用unordered_map ...這裏發生了什麼?另外
注:我使用gcc version 4.3.4 20090804 (release) 1 (GCC)
和我編寫這樣g++ -std=c++0X maptest.cpp
可能,大小爲<='sizeof(std :: size_t)'的整數類型的哈希函數只是標識函數。 – ildjarn
爲了好玩,試着改變'm1 [10] =「fleecey」;'像'm1 [154297] =「fleecey」;':) – JohannesD