Wie man die benutzerdefinierte Struktur richtig hasht?

In der Sprache C ++ gibt es die Standardvorlage für Hash-Funktionenstd::hash<T> für die einfachsten Arten, wiestd::string, intusw. Ich nehme an, dass diese Funktionen eine gute Entropie haben und die entsprechende Zufallsvariablenverteilung statistisch einheitlich ist. Wenn nicht, dann tun wir so, als ob es so wäre.

Dann habe ich eine Struktur:

struct CustomType {
  int field1;
  short field2;
  string field3;
  // ...
};

Ich möchte es hashen, indem ich separate Hashes von einigen seiner Felder verwende, sagen wir,std::hash(field1) undstd::hash(field2). Beide Hashes befinden sich in einer Reihe möglicher Werte des Typssize_t.

Was ist eine gute Hash-Funktion, die beide Ergebnisse kombinieren und wieder zuordnen kannsize_t?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage