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