Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果 std::unordered_map 的两个键具有相同的哈希值,标准是否保证它们将进入同一个存储桶?我们假设根据模板相等谓词,键不相等,它们只有相同的哈希值。
额外的问题:如果相同的哈希并不意味着相同的桶,那么能够单独遍历桶的目的是什么?
具有相同散列的对象被无序的关联容器放入同一个桶中。因此,两个相等的对象必须具有相同的散列。
23.2.5 第 8 段:
无序关联容器的元素被组织成桶。具有相同哈希码的键出现在同一个桶中。
额外问题:为什么要单独遍历存储桶?
奖励答案:因为您想并行处理容器的内容。桶迭代器彼此独立,因此每个线程可以在没有协调的情况下处理桶(假设没有新条目添加到容器中)。并且桶的大小应该大致相同,因此它们提供了方便的并行化量。