我最近在玩 C++ 标准库中新加入的 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版本4.3.4 20090804(发布)1(GCC),并且像这样编译
sizeof(std :: size_t)
的整数类型的哈希函数仅是恒等函数。 - ildjarnm1[10]="fleecey";
改成类似于m1[154297]="fleecey";
的东西,感受一下乐趣 :) - JohannesD