Classe hash_compare

O modelo de classe descreve um objeto que pode ser usado por qualquer um dos contêineres associativos de hash — hash_map, hash_multimap, hash_set ou hash_multiset — como um objeto de parâmetro Traits padrão para ordenar e fazer o hash dos elementos contidos.

Sintaxe

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

Comentários

Cada contêiner associativo de hash armazena um objeto de características de hash do tipo Traits (um parâmetro de modelo). Você pode derivar uma classe de uma especialização de hash_compare para substituir seletivamente determinadas funções e objetos ou pode fornecer sua própria versão dessa classe se atender a certos requisitos mínimos. Especificamente, para um objeto hash_comp do tipo hash_compare<Key, Traits>, o seguinte comportamento é necessário para os contêineres acima:

  • Para todos os valores key do tipo Key, a chamada hash_comp(key) serve como uma função de hash, que produz uma distribuição de valores do tipo size_t. A função fornecida por hash_compare retorna key.

  • Para qualquer valor key1 do tipo Key que precede key2 na sequência e tem o mesmo valor de hash (valor retornado pela função de hash), hash_comp(key2, key1) é falso. A função deve impor um ordenamento total de valores do tipo Key. A função fornecida por hash_compare retorna comp( key2, key1) ,, em que comp é um objeto armazenado do tipo Traits que você pode especificar quando constrói o objeto hash_comp. Para o tipo de parâmetro Traits padrão less<Key>, o valor das chaves de classificação nunca diminui.

  • A constante inteira bucket_size especifica o número médio de elementos por "bucket" (entrada de tabela de hash) que o contêiner deve tentar não ultrapassar. Ela deve ser maior que zero. O valor fornecido por hash_compare é 4.

  • A constante inteira min_buckets especifica o número mínimo de buckets a serem mantidos na tabela de hash. Ela deve ser uma potência de dois e maior que zero. O valor fornecido por hash_compare é 8.

Exemplo

Veja exemplos de hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set e hash_multiset::hash_multiset, para ver exemplos de como declarar e usar hash_compare.

Requisitos

Cabeçalho:<hash_map>

Namespace: stdext

Confira também

Acesso Thread-Safe na Biblioteca Padrão C++
Referência da biblioteca padrão C++