C++ benannte Anforderungen: Hash (seit C++11)
Von cppreference.com
< cpp | benannte req
Ein Hash ist ein Funktions-Objekt, dessen Ausgabe nur vom Input abhängt und eine sehr geringe Wahrscheinlichkeit hat, bei unterschiedlichen Inputs die gleiche Ausgabe zu erzeugen.
[bearbeiten] Anforderungen
Der Typ T erfüllt die Anforderung Hash wenn
- Der Typ
Terfüllt die Anforderung FunctionObject, CopyConstructible, Destructible, und
Gegeben
- h, ein Wert vom Typ
Toderconst T, dessen ArgumenttypKeyist, - k, ein Wert vom Typ, der zu
Keyoder const Key konvertierbar ist, - u, ein lvalue-Ausdruck vom Typ
Key.
Die folgenden Ausdrücke müssen gültig sein und ihre angegebenen Effekte haben.
| Ausdruck | Rückgabetyp | Anforderungen |
|---|---|---|
| h(k) | std::size_t | Der zurückgegebene Wert hängt während der gesamten Laufzeit des Programms nur vom Wert von k ab. Alle Auswertungen von h(k), die während einer gegebenen Ausführung eines Programms ausgeführt werden, liefern das gleiche Ergebnis für den gleichen Wert von k. Die Wahrscheinlichkeit, dass h(a) == h(b) für a != b gilt, sollte sich 1.0 / std::numeric_limits<std::size_t>::max() annähern. |
| h(u) | std::size_t | u wird nicht modifiziert. |
[bearbeiten] Standardbibliothek
| (C++11) |
Hash-Funktionsobjekt (Klassenvorlage) |
[bearbeiten] 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 |