boost :: hash_combine vs einfaches XOR'ing

8

Bei Verwendung der Boost-Bibliothek funktioniert die Funktion boost::hash_combine wie folgt:

%Vor%

Ссылка

Was ist der Vorteil dieses Ansatzes gegenüber einfach XOR-ing?

Mit XOR-ing kann man sogar die Hash-Funktion verwenden, um ungeordnete Container als Schlüssel zu verwenden, während dieser von der Reihenfolge abhängt.

    
k_l 26.04.2015, 21:33
quelle

1 Antwort

3

Es gibt viele bestellte Container wie Listen. Wenn Sie XOR verwenden würden, würden Sie grundsätzlich sagen, dass [0, 1] dasselbe ist wie [1, 0] . Das ist offensichtlich nicht der Fall. Es ist viel einfacher, die Methode für ungeordnete Container zu überschreiben, als eine, die viele Kollisionen für geordnete Container erzeugt. XOR hat viele andere unangenehme Eigenschaften. Zum Beispiel, wenn Sie doppelte Elemente haben, dann werden sie sich gegenseitig auslöschen.

Am Ende besteht die Idee für einen Hash darin, einigermaßen sicher zu sein, dass Sie nicht denselben Wert für mehrere Elemente erhalten. XOR passt nicht zu dieser Eigenschaft.

    
Maarten Bodewes 28.06.2015 23:25
quelle

Tags und Links