一意の構造を識別するための 3 つの int を持つ単純な C++ 構造体の場合、a、b、および c の現実的な値についてあまり知られていない場合、適切なハッシュ関数の実装となるものは何でしょうか。unordered_map のキーとして構造体を使用する必要がありますか?
struct Key {
int a, b, c;
}
一意の構造を識別するための 3 つの int を持つ単純な C++ 構造体の場合、a、b、および c の現実的な値についてあまり知られていない場合、適切なハッシュ関数の実装となるものは何でしょうか。unordered_map のキーとして構造体を使用する必要がありますか?
struct Key {
int a, b, c;
}
構造体全体を Murmurhash に渡します: https://sites.google.com/site/murmurhash/
自分で値を混ぜ合わせようとしないでください (たとえば、上記の乗算、加算、xor などのアドバイス)。ハッシュ関数を活用することの要点は、すでにそれらを非常に効果的に混合できるということです。事前に混合すると、有用なエントロピーが奪われるだけです。