假设我们有一组元素并希望将它们存储在哈希映射中(例如std::unordered_set
),并且每个元素都有一个 type 的键uint64_t
其值可以从 0 到最大可能值变化,使用简单哈希函数(其中键的哈希值就是键本身)是最佳选择吗?它是否取决于使用的容器(即 Google 的稀疏哈希与std::unordered_map
来自STL)?键值出现的概率未知。
如果您需要散列的只是具有未知概率的任何可能值的 uint64_t,并且您的输出必须是 uint64_t,那么您不会通过更改该值获得任何优势。只需使用密钥本身即可。
如果您知道有关值的分布的信息,或者您的值被限制在较小的范围内(这实际上与了解分布相同),那么对键应用转换可能是有益的,但这取决于容器的实现。当表将哈希转换为存储桶索引时,您只会通过减少冲突而受益,但这取决于表的算法和表的当前/平均状态(每个存储桶的使用频率)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)