在 C 0x 中组合哈希值
C 0x 引入了 hash<...>() 函数,提供了一种标准化方法计算各种数据类型的哈希值。然而,它最初缺乏类似于 Boost 中的 hash_combine 函数。
为了解决这个问题,Boost 开发人员建议了一个镜像他们自己的简单实现:
template <class T> inline void hash_combine(std::size_t& seed, const T& v) { std::hash<T> hasher; seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); }
这个函数有效将输入值 v 的哈希值与现有种子相结合。加法、异或运算和移位有助于均匀分布哈希值的位,从而产生更稳健且均匀的哈希分布。
通过将此函数合并到您的 C 0x 代码中,您可以无缝组合哈希值并受益于该语言提供的标准化哈希值计算的好处。
以上是如何高效组合C 0x中的哈希值?的详细内容。更多信息请关注PHP中文网其他相关文章!