评估 boost::hash_combine 对于哈希值组合的优点
当前问题: 人们发现 boost ::hash_combine 可能不是组合哈希的最佳方法
解释:
要考虑的关键方面是组合哈希结果中的分布。 boost::hash_combine 依赖于一系列 XOR 操作,这可能会导致分布不良,尤其是与 std::hash 等分布不良的哈希函数一起使用时。从实验中可以明显看出,当使用 boost::hash_combine 和 std::hash 时会发生大量冲突。
建议的替代方案:
推荐的方法是采用更均匀的方法分布哈希函数,例如答案中提供的分布函数。该哈希函数使用位旋转而不是移位来保留熵,并使用更强大的移位和异或运算组合来将熵分布在组合哈希中。
Boost::hash_combine 的理由:
虽然 boost::hash_combine 在分布方面可能不是最好的,但它提供了两个重要的功能优点:
建议:
对于速度至关重要且可以接受 boost::hash_combine 的减少分布的应用程序,它可能仍然是一个可行的选择。但是,对于哈希分布至关重要的情况,强烈建议使用建议的替代方案。
注意:Boost::hash_combine 在版本 1.81 中得到了改进,包含与建议的替代方案类似的功能。其性能依然优越,同时分布也显着增强。
以上是boost::hash_combine 仍然是哈希值组合的最佳选择吗?的详细内容。更多信息请关注PHP中文网其他相关文章!