是否std :: unordered_map中的所有键都保证具有相同的哈希值?或者具有不同哈希值的密钥是否位于同一个存储桶中?
在同一个桶中是否意味着具有相同的哈希?
在同一个桶中是否意味着具有相同的哈希?
没有.
哈希码是32位或64位数字,因此可能需要大量的值,但无序容器没有数十亿个桶.它将有N个桶并将数十亿可能的代码映射到这些N桶中的一个.
通常,它将使用模运算符(%)将哈希代码减少为较小的值,该值用作存储桶数组的索引.
因此,如果有13个桶,那么桶中的每个元素将具有模13的相同哈希码,但不一定是相同的哈希码.
的load_factor和max_load_factor构件可以用来查询和控制其描述了每个桶元素的平均数量的"负载因子".较高的加载因子意味着具有不同哈希码的元素更有可能最终出现在同一个桶中(因为hash%N值分布的桶数较少).
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |