在刷力扣的过程中,代码中使用了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上执行时,遍历map,元素的顺序和插入时的顺序并不一致的。


文章讨论了在使用C++的unordered_map容器时,代码在Windows和Linux上运行产生不同输出的问题。主要原因是unordered_map不保证元素的遍历顺序与插入顺序一致,这在不同编译器或平台上可能有所差异。程序员需要注意这一特性,避免依赖这种顺序关系。

7823

被折叠的 条评论
为什么被折叠?



