qua*_*dev 7 c++ iteration unordered-set c++11
如果迭代std::unordered_set多次元素而不改变集合的内容(但可能从中读取,计算其大小等),是否保证每次都以相同的顺序访问元素?
在你提到的具体情况中,是的.因为标准明确指出何时进行重新散列(因此重新排序).
它只发生在插入过程中.
§23.2.5[unord.req]
9无序关联容器的元素被组织成桶.具有相同哈希码的密钥出现在同一个存储桶中.当元素添加到无序关联容器时,桶的数量会自动增加,因此每个桶的平均元素数量保持在一个边界之下.重新散列使迭代器无效,元素之间的顺序更改以及桶元素出现的更改,但不会使指针或对元素的引用无效.对于unordered_multiset和unordered_multimap,rehashing保留了等效元素的相对顺序.
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |