如果 std::unordered_map 的两个键具有相同的哈希值,标准是否保证它们将进入同一个桶?根据模板相等谓词,我们假设键不相等,它们仅具有相同的哈希值。
奖励问题:如果相同的散列并不意味着相同的桶,那么能够单独遍历桶的目的是什么?
最佳答案
具有相同哈希值的对象被无序关联容器放入同一个桶中。因此,两个相等的对象必须具有相同的哈希值。
23.2.5 第 8 段:
The elements of an unordered associative container are organized into buckets. Keys with the same hash code appear in the same bucket.
额外的问题:为什么你可能想要单独遍历桶?
额外答案:因为您想并行处理容器的内容。桶迭代器彼此独立,因此每个线程都可以在不协调的情况下处理一个桶(假设没有新条目添加到容器中)。而且桶的大小应该大致相同,因此它们提供了方便的并行化量程。
关于c++ - 具有相同散列值的值是否在同一个 std::unordered_map 桶中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901346/