unordered_map如何在内部使用其哈希?

时间:2013-09-09 11:35:25

标签: c++ hash

unordered_map如何在内部使用哈希函数来访问属于密钥的存储桶?

std :: hash返回size_t类型,该类型可能大于容器中存在的桶数。如何将返回的哈希值映射到存储区索引?

典型的unordered_map实现是通过size()还是max_size()执行返回哈希的模数,还是会发生更复杂的事情?

1 个答案:

答案 0 :(得分:4)

  

典型的unordered_map实现是通过size()还是max_size()执行返回哈希的模数,还是会发生更复杂的事情?

几乎。模数为bucket_count(),因为这是哈希表中的桶数。

标准不要求使用模运算,只需bucket()函数以某种方式将键值映射到范围[0,bucket_count),并且具有等效哈希的键映射到同一桶。散列的模数是最直接的方法。