Функція boost::hash_combine
шаблону приймає посилання на хеш (викликається seed
) та об'єкт v
. Згідно з документами , він поєднується seed
з хешем v
by
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Я бачу, що це детерміновано. Я розумію, чому використовується XOR.
Б'юся об заклад, додавання допомагає широко зіставляти подібні значення, тому зондування хеш-таблиць не розбивається, але чи може хтось пояснити, що таке магічна константа?