gpt4 book ai didi

c++ - 两个内容相同的unordered_set-s的迭代顺序是否保证相同

转载 作者:行者123 更新时间:2023-12-04 13:07:10 25 4
gpt4 key购买 nike

如果我有两个内容相同(如果排序)但创建方式不同的 unordered_set 变量(比如,第一个变量只插入了项目,第二个变量以不同的顺序插入、删除等项目,但两个变量最终都具有相同的内容),迭代这两个变量会以相同的顺序产生值吗?

附言。这个问题不同于similar questions上迭代相同的无序集两次。

最佳答案

标准不做这样的保证。顺序必然是特定于实现的。

考虑这个例子,看看为什么顺序可能不同,即使内容相同:让我们从两个已创建和填充的无序集合 AB 开始以相同的顺序使用值,直到添加一个对象会触发重新散列。

现在考虑将一个对象添加到 B,然后将其删除,同时不向 A 添加任何对象时会发生什么。显然,这两个集合是相同的,但是由于 B 经历了重新散列,这些集合中对象的顺序将会改变。

C++11 standard 的第 23.2.5.12 节讨论无序容器的相等性。它指出找出相等性的最坏情况时间复杂度是 O(n^2)。这意味着不能保证顺序相同,否则我们将能够在 O(n) 中检查相等性。

关于c++ - 两个内容相同的unordered_set-s的迭代顺序是否保证相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68851481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com