如果迭代的元素std::unordered_set
多次而不更改集合的内容(但可能从中读取,计算其大小等),是否保证每次都会以相同的顺序访问元素?
在你提到的具体情况下,是的。因为该标准明确规定了何时进行重新散列(并因此重新排序)。
它仅在插入期间发生。
§ 23.2.5 [unord.req]
9 无序关联容器的元素被组织到桶中。具有相同哈希值的键
代码出现在同一个存储桶中。桶的数量会随着元素的添加而自动增加
到无序关联容器,以便每个桶的平均元素数量保持在以下
一个界限。重新散列会使迭代器无效、更改元素之间的顺序以及更改哪些存储桶
元素出现,但不会使元素的指针或引用无效。对于 unordered_multiset
和 unordered_multimap 一样,重新散列保留了等效元素的相对顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)