hash_compare, classe
Le modèle de classe décrit un objet qui peut être utilisé par l’un des conteneurs associatifs de hachage ( hash_map, hash_multimap, hash_set ou hash_multiset) en tant qu’objet de paramètre Traits par défaut pour classer et hacher les éléments qu’ils contiennent.
Syntaxe
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;
};
Notes
Chaque conteneur associatif de hachage stocke un objet de type traits de hachage (paramètre de Traits
modèle). Vous pouvez dériver une classe d’une spécialisation de hash_compare pour remplacer de manière sélective certaines fonctions et certains objets, ou vous pouvez fournir votre propre version de cette classe si vous répondez à certaines exigences minimales. Plus précisément, pour un objet hash_comp de type hash_compare<Key, Traits>
, le comportement suivant est requis par les conteneurs ci-dessus :
Pour toutes les valeurs de type
Key
, l’appel hash_comp(key
) sert de fonction de hachage, ce qui génère une distribution de valeurs de typesize_t
.key
La fonction fournie par hash_compare retournekey
.Pour toute valeur
key1
de typeKey
qui précèdekey2
dans la séquence et a la même valeur de hachage (valeur retournée par la fonction de hachage), hash_comp(key2
,key1
) est false. La fonction doit imposer un ordre total aux valeurs de typeKey
. La fonction fournie par hash_compare retourne comp(, ) où comp est un objet stocké de typeTraits
que vous pouvez spécifier lorsque vous construisez l’objet hash_comp.,
key1
key2
Pour le typeless<Key>
de paramètre par défautTraits
, les clés de tri ne diminuent jamais en valeur.La constante
bucket_size
entière spécifie le nombre moyen d’éléments par « compartiment » (entrée de table de hachage) que le conteneur doit essayer de ne pas dépasser. La valeur doit être supérieure à zéro. La valeur fournie par hash_compare est 4.La constante
min_buckets
entière spécifie le nombre minimal de compartiments à conserver dans la table de hachage. Il doit s'agir d'une puissance de deux et sa valeur doit être supérieure à zéro. La valeur fournie par hash_compare est 8.
Exemple
Consultez les exemples pour hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set et hash_multiset::hash_multiset pour voir comment déclarer et utiliser hash_compare.
Spécifications
Header :<hash_map>
Espace de noms : stdext
Voir aussi
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++