这是我的代码,请告诉我为什么它不像地图中那样从一开始就以正确的方式打印
#include<bits/stdc++.h>
using namespace std;
int main(){
unordered_map<int,int>arr;
for(int i=1;i<=10;i++){
arr[i]=i*i;
}
for(auto it=arr.begin();it!=arr.end();it++){
cout<<it->first<<" "<<it->second<<"\n";
}
cout<<"normal map \n";
map<int,int>arry;
for(int i=1;i<=10;i++){
arry[i]=i*i;
}
for(auto it=arry.begin();it!=arry.end();it++){
cout<<it->first<<" "<<it->second<<"\n";
}
}
我的输出是
10 100
9 81
8 64
7 49
6 36
5 25
1 1
2 4
3 9
4 16
法线贴图
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
为什么无序地图以这种方式打印值,为什么不像地图一样打印
答案 0 :(得分:1)
std::unordered_map
不会以任何特定顺序对键进行排序。这就是为什么它被称为 unordered 。
在内部,这些元素不是按照任何特定顺序排序的,而是按桶进行组织。元素放入哪个存储桶完全取决于其键的哈希值。这样一来,就可以快速访问各个元素,因为一旦计算出哈希值,它就指向该元素所放置的确切存储桶。