Функция шаблона boost::hash_combine
принимает ссылку на хэш (называемый seed
) и объект v
. Согласно docs, он объединяет seed
с хешем v
от
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Я вижу, что это детерминировано. Я вижу, почему используется XOR.
Я уверен, что добавление помогает в сопоставлении одинаковых значений широко, так что хэш-таблицы зондирования не будут разрушаться, но может ли кто-нибудь объяснить, что такое волшебная константа?