Sdílet prostřednictvím


hash_compare – třída

Šablona třídy popisuje objekt, který lze použít pomocí libovolného asociativního kontejneru hash – hash_map, hash_multimap, hash_set nebo hash_multiset – jako výchozí objekt parametru Traits k řazení a hash prvků, které obsahují.

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

Poznámky

Každý kontejner hash asociativní ukládá objekt hash traits typu Traits (parametr šablony). Třídu můžete odvodit ze specializace hash_compare k selektivnímu přepsání určitých funkcí a objektů, nebo můžete zadat vlastní verzi této třídy, pokud splňujete určité minimální požadavky. Konkrétně pro objekt hash_comp typu hash_compare<Key, Traits>je pro výše uvedené kontejnery vyžadováno následující chování:

  • Pro všechny hodnoty key typu Keyslouží volání hash_comp(key) jako hashovací funkce, která poskytuje rozdělení hodnot typu size_t. Funkce zadaná hash_compare vrátí key.

  • Pro libovolnou hodnotu key1 typu Key , která předchází key2 sekvenci a má stejnou hodnotu hash (hodnotu vrácenou funkcí hash), hash_comp(key2, key1) je nepravda. Funkce musí uložit celkové pořadí hodnot typu Key. Funkce zadaná hash_compare vrátí comp(key2, key1), , kde comp je uložený objekt typu Traits , který můžete určit při vytváření objektu hash_comp. U výchozího Traits typu less<Key>parametru se klíče řazení nikdy nesníží v hodnotě.

  • Celočíselná konstanta bucket_size určuje průměrný počet prvků na kontejner (položka hash-table), které by se měl kontejner pokusit překročit. Musí být větší než nula. Hodnota zadaná hash_compare je 4.

  • Celočíselná konstanta min_buckets určuje minimální počet kbelíků, které se mají zachovat v tabulce hash. Musí to být mocnina dvou a větších než nula. Hodnota zadaná hash_compare je 8.

Příklad

Příklady pro hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set a hash_multiset::hash_multiset, příklady deklarování a použití hash_compare.

Požadavky

Záhlaví:<hash_map>

Obor názvů: stdext

Viz také

Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace