最佳答案
boost::hash_combine
模板函数接受对散列(称为 seed
)和对象 v
的引用。根据 医生,它将 seed
与 v
的 hash 结合在一起
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
我知道这是确定性的,我知道为什么使用 XOR。
我敢打赌,这个加法有助于将相似的值广泛地映射到不同的地方,这样探测散列表就不会崩溃,但是谁能解释一下这个神奇的常量是什么呢?