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

Jac*_*b G 2 c++ hash

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

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

典型的unordered_map实现是按size()还是max_size()对返回的哈希值进行模运算,还是会发生更复杂的事情?

Mik*_*our 5

典型的unordered_map实现是按size()还是max_size()对返回的哈希值进行模运算,还是会发生更复杂的事情?

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

该标准不需要使用模运算来完成此操作,只是该bucket()函数[0,bucket_count)以某种方式将键值映射到范围,并且具有等效哈希值的键映射到同一存储桶。哈希的模数是最简单的方法。