Fungsi boost::hash_combine
template mengambil referensi ke hash (dipanggil seed
) dan objek v
. Menurut dokumen , ini digabungkan seed
dengan hash v
oleh
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Saya dapat melihat bahwa ini deterministik. Saya mengerti mengapa XOR digunakan.
Saya yakin penambahan membantu dalam memetakan nilai yang sama secara terpisah sehingga tabel hash probing tidak akan rusak, tetapi dapatkah seseorang menjelaskan apa konstanta ajaib itu?