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不一样。

posted @ 2022-04-26 23:09  SupperMary  阅读(1993)  评论(0编辑  收藏  举报