使用std::unordered_set(或std::unrdered_map(在两台不同的机器上运行并使用相同的g++版本编译的相同代码是否具有相同的迭代顺序?
相关但略有不同的问题
- 两个相同的无序映射的顺序相同吗
我在这里添加了一些评论,以更好地解释我试图理解的内容。
在这种情况下,根据迭代顺序,修复编译器版本以获得相同的行为是否足够?还是取决于其他因素?
感谢您指出,该标准没有强加任何行为。但是,必须明确规定执行情况。最后,它是计算机代码,因此它是确定性的和定义明确的。我想到的唯一替代方案是,一些疯狂的实现可能会使用一些真正的随机化来源,但我认为这是非常不可能的。
C++标准中没有任何内容表明它应该这样做。
g++似乎没有任何文档说明标准对这个特定主题的要求。
那么,我会笼统地说不。