所述boost::hash_combine模板函数采用一个散列(称为参考seed)和对象v.根据文档,它结合seed了vby 的哈希
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Run Code Online (Sandbox Code Playgroud)
我可以看出这是确定性的.我明白为什么要使用XOR.
我敢打赌,这个加法有助于将相似的值广泛分开,因此探测哈希表不会崩溃,但有人可以解释这个神奇常数是什么吗?
什么是基本类型的哈希码,例如int?
例如,让我们说num是一个整数.
int hasCode = 0;
if (num != 0) {
hasCode = hasCode + num.hashCode();
}
Run Code Online (Sandbox Code Playgroud)