C++ named requirements: Hash (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ein Hash ist ein Funktionsobjekt, bei dem die Ausgabe nur von der Eingabe abhängt und eine sehr geringe Wahrscheinlichkeit besteht, dass bei unterschiedlichen Eingabewerten dieselbe Ausgabe erzeugt wird.
Anforderungen
Der Typ
T
erfüllt
Hash
wenn
-
Der Typ
Terfüllt die Anforderungen für FunctionObject , CopyConstructible , Destructible , und
Gegeben
-
h
, ein Wert vom Typ
Toderconst T, dessen ArgumenttypKeyist, -
k
, ein Wert konvertierbar zu
Keyoder const Key , -
u
, ein
Lvalue
-Ausdruck vom Typ
Key.
Die folgenden Ausdrücke müssen gültig sein und ihre spezifizierten Effekte haben.
| Expression | Rückgabetyp | Anforderungen |
|---|---|---|
| h ( k ) | std::size_t |
Der zurückgegebene Wert hängt nur vom Wert von
k
für die Dauer des Programms ab.
Alle Auswertungen von h ( k ) , die während einer bestimmten Programmausführung ausgeführt werden, ergeben für denselben Wert von k dasselbe Ergebnis. Die Wahrscheinlichkeit von h ( a ) == h ( b ) für a ! = b sollte sich 1.0 / std:: numeric_limits < std:: size_t > :: max ( ) annähern. |
| h ( u ) | std::size_t | u wird nicht modifiziert. |
Standardbibliothek
|
(C++11)
|
Hash-Funktionsobjekt
(Klassentemplate) |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2291 | C++11 | gleiche Ergebnisse für gleiche Argumente waren in allen Fällen erforderlich | nur innerhalb einer einzelnen Ausführung erforderlich |