La boost::hash_combine
fonction de modèle prend une référence à un hachage (appelé seed
) et à un objet v
. Selon la documentation , il se combine seed
avec le hachage de v
by
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Je peux voir que c'est déterministe. Je vois pourquoi un XOR est utilisé.
Je parie que l'ajout aide à mapper des valeurs similaires largement les unes des autres afin que les tables de hachage ne se décomposent pas, mais quelqu'un peut-il expliquer quelle est la constante magique?