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 tipoKey
, a chamada hash_comp(key
) serve como uma função de hash, que produz uma distribuição de valores do tiposize_t
. A função fornecida por hash_compare retornakey
.Para qualquer valor
key1
do tipoKey
que precedekey2
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 tipoKey
. A função fornecida por hash_compare retorna comp(key2
,key1
),
, em que comp é um objeto armazenado do tipoTraits
que você pode especificar quando constrói o objeto hash_comp. Para o tipo de parâmetroTraits
padrãoless<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++