Die boost::hash_combineVorlagenfunktion verweist auf einen Hash (aufgerufen seed) und ein Objekt v. Laut den Dokumenten wird es seedmit dem Hash von vby kombiniert
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Ich kann sehen, dass dies deterministisch ist. Ich verstehe, warum ein XOR verwendet wird.
Ich wette, der Zusatz hilft bei der Abbildung ähnlicher Werte weit auseinander, damit die Hash-Tabellen nicht zusammenbrechen. Aber kann jemand erklären, was die magische Konstante ist?