Namespaces
Variants

C++ named requirements: Hash (since C++11)

From cppreference.net
C++ named requirements

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

Gegeben

  • h , ein Wert vom Typ T oder const T , dessen Argumenttyp Key ist,
  • k , ein Wert konvertierbar zu Key oder 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