Класс 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++