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 tipoKey
, la chiamata hash_comp(key
) funge da funzione hash, che restituisce una distribuzione di valori di tiposize_t
. La funzione fornita da hash_compare restituiscekey
.Per qualsiasi valore
key1
di tipoKey
che precedekey2
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 tipoKey
. La funzione fornita da hash_compare restituisce comp(key2
,key1
),
dove comp è un oggetto archiviato di tipoTraits
che è possibile specificare quando si costruisce l'oggetto hash_comp. Per il tipo diless<Key>
parametro predefinitoTraits
, 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++