001
07.08.2008, 16:29 Uhr
0xdeadbeef
Gott (Operator)
|
1.
Zitat: |
Für alle Werte _Key des Typs Key funktioniert der Aufruf hash_comp(_Key) als Hash-Funktion, deren Ergebnisse eine Verteilung von Werten des Typs size_t darstellen. Die von hash_compare bereitgestellte Funktion gibt _Key zurück.
|
So wie ich das verstehe, bedeutet das, der Klammeroperator mit einem Parameter ist eine Hash-Funktion, und in der bereitgestellten Implementierung ist das stumpf die Identität nach size_t gecastet.
2.
Zitat: |
Für jeden Wert _Key1 des Typs Key, der in der Ordnung kleiner als _Key2 ist und den selben Hashwert hat (von der Hashfunktion zurückgegebenen Wert), ist hash_comp(_Key1, _Key2) falsch. Die Funktion muss eine totale Ordnung über Werten des Typs Key sein. Die von hash_compare bereitgestellte Funktion gibt comp(_Key1, _Key2) zurück, wobei comp ein gespeichertes Objekt vom Typ Traits ist, das bei der Erstellung von hash_comp angegeben werden kann. Bei der Benutzung des Vorgabetyps less<Key> verlieren Sortierschlüssel nie an Wert.
|
Der letzte Satz ist etwas schwer zu übersetzen, was damit gemeint ist, wenn ich das richtig lese, dass hash_compare mit less<Key> als traits bei Werten, die den gleichen Hash-Wert haben, immer falsch zurückgeben wird. Das heißt, wenn _Key1 == _Key2, dann ist hash_comp(_Key1, _Key2) == hash_comp(_Key2, _Key1) == false. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |