Hash-jämförelseklass

Klassmallen beskriver ett objekt som kan användas av någon av hash-associativa containrar – hash_map, hash_multimap, hash_set eller hash_multiset – som ett standarddragsparameterobjekt för ordning och hash de element som de innehåller.

Note

hash_compare togs bort i MSVC Build Tools 14.51

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;
};

Remarks

Varje hash-associativ container lagrar ett hash-egenskapsobjekt av typen Traits (en mallparameter). Du kan härleda en klass från en specialisering av hash_compare för att selektivt åsidosätta vissa funktioner och objekt, eller så kan du ange din egen version av den här klassen om du uppfyller vissa minimikrav. Mer specifikt för ett objekt hash_comp av typen hash_compare<Key, Traits>krävs följande beteende av ovanstående containrar:

  • För alla värden key av typen Keyfungerar anropet hash_comp(key) som en hash-funktion, vilket ger en fördelning av värden av typen size_t. Funktionen som tillhandahålls av hash_compare returnerar key.

  • För alla värden key1 av typen Key som föregår key2 i sekvensen och har samma hash-värde (värde som returneras av hash-funktionen) är hash_comp(key2, key1) falskt. Funktionen måste införa en total ordning på värden av typen Key. Funktionen som tillhandahålls av hash_compare returnerar comp(key2, key1) , där comp är ett lagrat objekt av typen Traits som du kan ange när du skapar objektet hash_comp. För standardparametertypen Traitsless<Key>minskar sorteringsnycklar aldrig i värde.

  • Heltalskonstanten bucket_size anger det genomsnittliga antalet element per "bucket" (hash-table-post) som containern ska försöka att inte överskrida. Den måste vara större än noll. Värdet som anges av hash_compare är 4.

  • Heltalskonstanten min_buckets anger det minsta antalet bucketar som ska underhållas i hash-tabellen. Det måste vara en kraft på två och större än noll. Värdet som anges av hash_compare är 8.

Exempel

Se exempel för hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set och hash_multiset::hash_multiset, för exempel på hur du deklarerar och använder hash_compare.

Krav

rubrik:<hash_map>

Namnområde:stdext

Se även

Trådsäkerhet i C++ Standard Library
Standardbiblioteksreferens för C++