Магическое число в boost :: hash_combine

Функция шаблона boost :: hash_combine принимает ссылку на хэш (называемый seed ) и объект v . Согласно документам , он объединяет seed с хешем v по

seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);

. Я вижу, что это детерминировано. Я понимаю, почему используется XOR.

Бьюсь об заклад, это добавление помогает отображать одинаковые значения на значительном расстоянии друг от друга, так что хеш-таблицы не сломаются, но может кто-нибудь объяснить, что такое магическая константа?

86
задан Fred Foo 16 November 2012 в 09:45
поделиться