Condividi tramite


Classe hash_compare

Il modello di classe descrive un oggetto che può essere usato da uno qualsiasi dei contenitori associativi hash, hash_map, hash_multimap, hash_set o hash_multiset, come oggetto parametro Traits predefinito per ordinare ed eseguire l'hash degli elementi contenuti.

Sintassi

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

Osservazioni:

Ogni contenitore associativo hash archivia un oggetto tratti hash di tipo Traits (un parametro modello). È possibile derivare una classe da una specializzazione di hash_compare per eseguire in modo selettivo l'override di determinati oggetti e funzioni oppure è possibile fornire la propria versione di questa classe se vengono soddisfatti determinati requisiti minimi. In particolare, per un oggetto hash_comp di tipo hash_compare<Key, Traits>, il comportamento seguente è richiesto dai contenitori precedenti:

  • Per tutti i valori key di tipo Key, la chiamata hash_comp(key) funge da funzione hash, che restituisce una distribuzione di valori di tipo size_t. La funzione fornita da hash_compare restituisce key.

  • Per qualsiasi valore key1 di tipo Key che precede key2 nella sequenza e ha lo stesso valore hash (valore restituito dalla funzione hash), hash_comp(key2, key1) è false. La funzione deve imporre un ordinamento totale sui valori di tipo Key. La funzione fornita da hash_compare restituisce comp(key2, key1) , dove comp è un oggetto archiviato di tipo Traits che è possibile specificare quando si costruisce l'oggetto hash_comp. Per il tipo di less<Key>parametro predefinito Traits , le chiavi di ordinamento non diminuiscono mai nel valore.

  • La costante bucket_size integer specifica il numero medio di elementi per "bucket" (voce di tabella hash) che il contenitore deve provare a non superare. Il valore deve essere maggiore di zero. Il valore fornito da hash_compare è 4.

  • La costante min_buckets integer specifica il numero minimo di bucket da mantenere nella tabella hash. Il valore deve essere una potenza di due e maggiore di zero. Il valore fornito da hash_compare è 8.

Esempio

Vedere gli esempi relativi a hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set e hash_multiset::hash_multiset per informazioni su come dichiarare e usare hash_compare.

Requisiti

Intestazione:<hash_map>

Spazio dei nomi: stdext

Vedi anche

Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)
Informazioni di riferimento per la libreria standard C++