相关疑难解决方法(0)

92
推荐指数
7
解决办法
10万
查看次数

boost :: hash_combine中的幻数

所述boost::hash_combine模板函数采用一个散列(称为参考seed)和对象v.根据文档,它结合seedvby 的哈希

seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Run Code Online (Sandbox Code Playgroud)

我可以看出这是确定性的.我明白为什么要使用XOR.

我敢打赌,这个加法有助于将相似的值广泛分开,因此探测哈希表不会崩溃,但有人可以解释这个神奇常数是什么吗?

c++ algorithm hash boost magic-numbers

86
推荐指数
2
解决办法
2万
查看次数

C++ - 为什么boost :: hash_combine是组合哈希值的最佳方法?

我在其他帖子中读到,这似乎是组合哈希值的最佳方式.有人可以打破这一点,并解释为什么这是最好的方法吗?

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);
}
Run Code Online (Sandbox Code Playgroud)

编辑:另一个问题只是要求神奇的数字,但我想知道整个功能,而不仅仅是这一部分.

c++ hash boost c++11

31
推荐指数
2
解决办法
1万
查看次数

标签 统计

hash ×3

algorithm ×2

boost ×2

c++ ×2

c ×1

c++11 ×1

magic-numbers ×1