Поделиться через


Класс hash_compare

Шаблон класса описывает объект, который можно использовать любым из хэш-ассоциативных контейнеров — hash_map, hash_multimap, hash_set или hash_multiset — в качестве объекта параметра Traits по умолчанию для упорядочивания и хэша элементов, которые они содержат.

Синтаксис

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

Замечания

Каждый хэш-ассоциативный контейнер сохраняет объект хэш-признаков типа Traits (параметр шаблона). Можно наследовать класс от специализации hash_compare, чтобы выборочно переопределить некоторые функции и объекты, или можно предоставить собственную версию этого класса, если выполняются определенные минимальные требования. В частности, для объекта hash_comp типа hash_compare<Key, Traits>следующее поведение требуется приведенным выше контейнерам:

  • Для всех значений key типа Keyвызов hash_comp(key) служит хэш-функцией, которая дает распределение значений типа size_t. Функция, предоставленная hash_compare, возвращает key.

  • Для любого типаKey, который предшествует key2 последовательности и имеет то же хэш-значение key1 (значение, возвращаемое хэш-функцией), hash_comp(key2, key1) имеет значение false. Функция должна навязать общее упорядочение значений типа Key. Функция, предоставляемая hash_compare возвращает comp(key2, key1, где comp является хранимым объектом типаTraits, который можно указать при создании объекта hash_comp. Для типа less<Key>параметра по умолчанию Traits ключи сортировки никогда не уменьшались.

  • Целочисленная константа bucket_size указывает среднее число элементов на "контейнер" (запись хэш-таблицы), которое контейнер должен пытаться не превышать. Это значение должно быть больше нуля. Значение, предоставленное hash_compare, равно 4.

  • Целочисленная константа min_buckets указывает минимальное количество контейнеров для обслуживания в хэш-таблице. Оно должно быть степенью числа два и больше нуля. Значение, предоставленное hash_compare, равно 8.

Пример

Примеры объявления и использования hash_compare см. в примерах hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set и hash_multiset::hash_multiset.

Требования

Заголовок:<hash_map>

Пространство имен: stdext

См. также

Потокобезопасность в стандартной библиотеке C++
Справочник по стандартной библиотеке C++