boost::hash_combine
Şablon işlevi (denilen bir karma bir referans alır seed
) ve bir nesne v
. Göre docs , bu birleştirir seed
ve karma ile v
tarafından
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Bunun deterministik olduğunu görebiliyorum. XOR'un neden kullanıldığını anlıyorum.
Bahse girerim, ekleme benzer değerleri birbirinden geniş bir şekilde haritalandırmaya yardımcı olur, böylece araştırma hash tabloları bozulmaz, ancak birisi sihirli sabitin ne olduğunu açıklayabilir mi?