unordered_map 的顺序是怎样的
unordered_map有一些隐形的坑,下面的代码
#include<unordered_map>
#include<map>
#include<iostream>
using namespace std;
int main()
{
unordered_map<int, int> map1;
map1[0] = 0;
map1[5] = 5;
map1[3] = 3;
map1[2] = 2;
map1[4] = 4;
auto iter = map1.begin();
while (iter != map1.end())
{
cout << iter->first << ":" << iter->second << endl;
iter++;
}
return 0;
}
在Windows上的输出是
可以看到,遍历map的时候,里面元素的顺序和插入元素的顺序是一致的。
但是在Linux运行时,如下图所示
也就是说,unordered_map的元素顺序并不保证是插入元素的顺序。
Windows的实现可能与Linux不一样。