Freigeben über


hash_compare-Klasse

Die Klassenvorlage beschreibt ein Objekt, das von einem der Hashzuordnungscontainer verwendet werden kann – hash_map, hash_multimap, hash_set oder hash_multiset – als Standardparameterobjekt zum Sortieren und Hashen der darin enthaltenen Elemente.

Syntax

class hash_compare
{
   Traits comp;
   public:
   const size_t bucket_size = 4;
   const size_t min_buckets = 8;
   hash_compare();
   hash_compare(Traits pred);
   size_t operator()(const Key& key) const;
   bool operator()(
   const Key& key1,
   const Key& key2) const;
};

Hinweise

Jeder assoziative Hashcontainer speichert ein Hasheigenschaftenobjekt vom Typ Traits (ein Vorlagenparameter). Sie können eine Klasse aus einer Spezialisierung von „hash_compare“ ableiten, um gezielt bestimmte Funktionen und Objekte zu überschreiben, oder Sie können eine eigene Version dieser Klasse angeben, wenn Sie bestimmte Mindestanforderungen einhalten. Insbesondere für ein Objekt hash_comp typs hash_compare<Key, Traits>ist das folgende Verhalten von den oben genannten Containern erforderlich:

  • Für alle Werte key des Typs Keydient der Aufruf hash_comp(key) als Hashfunktion, wodurch eine Verteilung von Werten vom Typ size_tzurückgegeben wird. Die von „hash_compare“ bereitgestellte Funktion gibt key zurück.

  • Für jeden Wert key1 vom Typ Key , der in der Sequenz vorausgeht key2 und denselben Hashwert aufweist (Wert, der von der Hashfunktion zurückgegeben wird), ist hash_comp(key2, key1) "false". Die Funktion muss eine Gesamtbestellung für Werte vom Typ Keyauferlegen. Die von hash_compare bereitgestellte Funktion gibt comp(, ) , zurück, key1wobei comp ein gespeichertes Objekt vom Typ Traits ist, das Sie angeben können, wenn Sie das Objekt hash_comp erstellen.key2 Für den Standardparametertyp Traits less<Key>verringern die Sortierschlüssel niemals den Wert.

  • Die ganzzahlige Konstante bucket_size gibt die mittlere Anzahl von Elementen pro Bucket (Hashtabelleneintrag) an, die der Container nicht überschreiten soll. Der Wert der Konstanten muss größer als 0 sein. „hash_compare“ stellt den Wert „4“ bereit.

  • Die ganze Zahl min_buckets gibt die Mindestanzahl der Buckets an, die in der Hashtabelle verwaltet werden sollen. Der Wert der Konstanten muss eine Potenz von zwei und größer als 0 sein. „hash_compare“ stellt den Wert „8“ bereit.

Beispiel

Beispiele, wie „hash_compare“ deklariert und verwendet wird, finden Sie in den Beispielen zu hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set und hash_multiset::hash_multiset.

Anforderungen

Header:<hash_map>

Namespace: stdext

Siehe auch

Threadsicherheit in der C++-Standardbibliothek
C++-Standardbibliotheksreferenz