Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: Hash (seit C++11)

Von cppreference.com
 
 
C++ benannte Anforderungen
 

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

Gegeben

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

[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