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


Класс hash_multiset

Примечание

Этот API устарел.Альтернативой является Класс unordered_multiset.

Hash_multiset расширение класса контейнера стандартной библиотеки шаблонов и используется для хранения и быстрого считывания данных из коллекции, в которой содержатся значения элементов, которые служат в качестве значения ключа и необходимо, чтобы уникальным.

template < 
   class Key,  
   class Traits=hash_compare<Key, less<Key> >,  
   class Allocator=allocator<Key>  
> 
class hash_multiset

Параметры

  • Ключ
    Тип данных элементов, сохраняемых в hash_multiset.

  • Traits
    Тип, содержащий 2 объекта функции, один из класса, который сравнивает бинарный предикат способна для сравнения значения 2 элемента в качестве ключей сортировки для определения относительный порядок и хэш-функция, значения ключа унарные сопоставления предиката элементов в целые числа без знака типа size_t. Этот аргумент является необязательным и hash_compare*<Key,* less*<Key>>*— значение по умолчанию.

  • Allocator
    Тип, представляющий сохраненный объект распределителя, инкапсулирующий информацию о выделении hash_multiset и освобождение памяти. Этот аргумент является необязательным и значение по умолчанию allocator*<Key>.*

Заметки

Hash_multiset выглядит следующим образом:

  • Ассоциативный контейнер, который контейнер переменного размера, который поддерживает эффективное получение значений на основе элемента связанного значения ключа. Кроме того, это простой ассоциативный контейнер, поскольку его значения элемента его значений ключа.

  • Reversible, поскольку он предоставляет двунаправленный итератор для получения его элементы.

  • Хэшированный, поскольку элементы группированы в блоки на основе значения свойства хэш-функции примененного к значениям ключа элементов.

  • Уникально в том смысле, что каждое из его элементов должен иметь уникальный ключ. Поскольку hash_multiset также простой ассоциативный контейнер, элементы также уникальны.

  • Класс шаблона, поскольку функция он предоставляет универсален и поэтому не зависят от конкретного типа данных, содержащихся в виде элементов или ключи. Типы данных, используемые для элементов и ключей, вместо этого определяются как параметры в шаблоне класса вместе с функцией и распределителем сравнения.

Основное преимущество хэшируется перед сортировкой большую эффективность: успешная хэширование выполняет вставки, удаления и находит в среднем постоянно времени по сравнению с временем пропорциональным в логарифму числа элементов в контейнере для методов сортировки. Значение элемента в наборе не может быть изменено напрямую. Вместо этого необходимо удалить старые значения и вставлять элементы с новыми значениями.

Выбор типа контейнера создавайтесь обычно типа поиска и вставка требуемого приложением. Хэшированные ассоциативные контейнеры оптимизированы для операций поиска, вставки и удаления. Функции-члены, явно поддерживают такие операции эффективны при использовании с хорошо созданное хэш-функции, выполняя их во времени, в среднем константой и зависит от количества элементов в контейнере. Хорошо созданное хэш-функция создает однородное распределение хэшированных значений и свернуть число конфликтов, где считается, что возникает конфликт, если определенные значения ключа преобразуется в одном хэшированное значение. В худшем случае худшим с помощью хэш-функции, количество операций, пропорционально количеству элементов в последовательности (линейном времени).

Hash_multiset должно быть ассоциативным контейнером варианта при условия сопоставляет значения с внешним ключам удовлетворяют приложением. Элементы hash_multiset могут быть множественны и служить свои ключи сортировки, поэтому ключи не является уникальным. Модель для этого типа структуры упорядоченный список, сообщает, ключевые слова, в которых ключевые слова могут возникнуть несколько раз. Несколько ключевых слов вхождения не были разрешены, а затем hash_set была бы соответствующей структуре контейнера. При наличии уникального определения вложенных как значения в список уникальных слов, hash_map была бы соответствующей структурой, содержащие эти данные. Если вместо этого определения не были уникальны, hash_multimap будет контейнером варианта.

Hash_multiset сортирует последовательность его элементы управления путем вызова, сохраненный объект характеристик хэш типа value_compare. Этот сохраненный объект может быть получен доступ, вызвав функцию-член key_comp. Такой объект функции должен работать так же, как объект класса hash_compare*<Key,* less*<Key>>.* В частности, для всего ключа значений типа Ключ, вызов Признак(ключ) создает распределение значений типа size_t.

Как правило, элементы должны быть просто меньше соответствующий установить этот порядок. таким образом, чтобы данные, все 2 элемента он мог быть определен того, что они эквивалентны (в том смысле, что ни одно меньше другой) или, чтобы один меньше другой. Это приводит к тому, что порядок неравнозначными между элементами. На более технического примечания, функция сравнения бинарный предикат, который вызывает строгого слабое упорядочение в стандартном математически смысле. Бинарный предикат f(x,y) объект функции с 2 объекта аргумента x и y и возвращаемое значение из истинного или false. Упорядочение вызванная на hash_multiset строгие слабые приказывающ бинарный irreflexive, если предикат антисимметрический и транзитивн и если эквивалентность транзитивна, где 2 объекта x и y, чтобы быть соответствующие при и f(x,y) и f(x,y) false. Если более строгое условие равенства между ключами заменяет любую из эквивалентности, порядок будет итогом (в том смысле, что все элементы упорядочены по отношению к друг друга) и соответствующие ключи, которые будут indiscernible друг от друга.

Фактический порядок элементов в контролируемой последовательности зависит от хэш-функции, порядок функции и текущего размера хэш-таблицы, хранящиеся в объекте контейнера. Невозможно определить текущий размер хэш-таблицы, так как нельзя, чтобы узнать порядок элементов в контролируемой последовательности. Вставка элементов не итераторы, что и удаление элементов только те, что итераторы, указывающий на удаленные элементы.

Итератор, предоставляемого классом hash_multiset двунаправленный итератор, но функции INSERT и hash_multiset члена класса имеют версии, которые принимают в качестве параметров шаблона более предоставляет итератор ввода, которого требования к функции минимальне от тех гарантированные классом двунаправленных итераторов. Другая форма итератора семейство уточнениями понятий, связанных в их функции. Каждое понятие итератора имеет свой hash_multiset требований и алгоритмы, которые работают с ними ограничение включение файла их условий с требованиями, предоставляемым этим типом итератора. Оно может быть высказыван предполагать, что итератору ввода может быть разыменован для обращения к определенному объекту и он может быть инкрементирован следующему итератору в последовательности. Это минимальное hash_multiset функции, но достаточно, чтобы иметь возможность контактировать учитывается о диапазоне итераторов [_First, _Last) в контексте функций членов класса.

В Visual C++ .NET 2003 C, элементы файла заголовка <hash_map> и <hash_set> больше не в пространстве имен std, а перемещается в пространство имен stdext. Дополнительные сведения см. в разделе Пространство имен stdext.

конструкторов;

hash_multiset

Создает hash_multiset, пусты, или скопировать все или часть другого hash_multiset.

Определения типов

allocator_type

Тип, представляющий класс allocator для объекта hash_multiset.

const_iterator

Тип, предоставляющий двунаправленный итератор, который может считывать элемент const в hash_multiset.

const_pointer

Тип, который содержит указатель элемент const в hash_multiset.

const_reference

Тип, который предоставляет ссылку на элемент const хранящихся в hash_multiset для чтения и выполнения операций const.

const_reverse_iterator

Тип, предоставляющий двунаправленный итератор, который может считывать любой элемент const в hash_multiset.

difference_type

Тип знакового целого числа, который содержит различие между 2 итераторами, только элементы внутри того же hash_multiset.

итератор

Тип, предоставляющий двунаправленный итератор, который может считывать и изменять любой элемент в hash_multiset.

key_compare

Тип, который предоставляет объект функции, можно сравнивать 2 ключа сортировки для определения относительный порядок 2 элементов в hash_multiset.

key_type

Тип, который описывает объект, хранящийся в качестве элемента hash_set его ресурсов в качестве ключа.

указатель

Тип, который содержит указатель элемент в hash_multiset.

Ссылка

Тип, который предоставляет ссылку на элемент хранящихся в hash_multiset.

reverse_iterator

Тип, предоставляющий двунаправленный итератор, который может считывать и изменять элемент в обращенном hash_multiset.

size_type

Тип целого числа без знака, которое может быть представлено число элементов в hash_multiset.

value_compare

Тип, предоставляющий 2 объекта функции, бинарный предикат класса сравнения, можно сравнивать значения 2 элемента hash_multiset для определения относительный порядок и унарный предикат, хэширует элементы.

value_type

Тип, который описывает объект, хранящийся в качестве элемента hash_multiset его ресурсов в качестве значения.

Функции-члены

begin

Возвращает итератор, принимаются первый элемент в hash_multiset.

hash_multiset::cbegin

Возвращает итератор const слишком первый элемент в hash_multiset.

hash_multiset::cend

Возвращает итератор const, принимаются расположение последующими последний элемент в hash_multiset.

clear

Удаляет все элементы hash_multiset.

count

Возвращает количество элементов в hash_multiset ключ которого соответствует указанному ключу параметр-

hash_multiset::crbegin

Возвращает итератор const слишком первый элемент в обращенном hash_multiset.

hash_multiset::crend

Возвращает итератор const, принимаются расположение последующими последний элемент в обращенном hash_multiset.

hash_multiset::emplace

Вставляет элемент построен на месте в hash_multiset.

hash_multiset::emplace_hint

Вставляет элемент построен на месте в hash_multiset, с подсказками размещения.

empty

Если тесты hash_multiset пусто.

end

Возвращает итератор, принимаются расположение последующими последний элемент в hash_multiset.

equal_range

Возвращает пару итераторов соответственно на первый элемент в hash_multiset с ключом, который больше, чем указанный ключ и на первый элемент в hash_multiset с ключом, равно или больше значения ключа.

erase

Удаляет элемент или набор элементов в hash_multiset из заданных позиций или удалять элементы, соответствующие указанному ключу.

find

Возвращает итератор слишком расположение элемента в hash_multiset, ключ имеет соответствующий указанному ключу.

get_allocator

Возвращает копию объекта allocator, используемого для создания hash_multiset.

Вставка

Вставляет элемент или набор элементов в hash_multiset.

key_comp

Извлекает копию объекта сравнения, используемого для ключей, в hash_multiset.

lower_bound

Возвращает итератор на первый элемент в hash_multiset с ключом, равно или больше, чем указанный ключ.

max_size

Возвращает максимальную длину hash_multiset.

rbegin

Возвращает итератор слишком первый элемент в обращенном hash_multiset.

rend

Возвращает итератор, принимаются расположение последующими последний элемент в обращенном hash_multiset.

size

Возвращает количество элементов в hash_multiset.

буфер обмена

Меняет местами элементы 2 hash_multiset s.

upper_bound

Возвращает итератор на первый элемент в hash_multiset, ключом, равно или больше, чем указанный ключ.

value_comp

Извлекает копию объекта характеристик хэш, используемого в хэша и значения ключа элемента, в hash_multiset.

Операторы

hash_multiset::operator=

Заменяет элементы hash_multiset копией другого hash_multiset.

Требования

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

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

См. также

Ссылки

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

Библиотека стандартных шаблонов

Другие ресурсы

члены<hash_set>

члены hash_multiset