Класс 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. |
Определения типов
Тип, представляющий класс allocator для объекта hash_multiset. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать элемент const в hash_multiset. |
|
Тип, который содержит указатель элемент const в hash_multiset. |
|
Тип, который предоставляет ссылку на элемент const хранящихся в hash_multiset для чтения и выполнения операций const. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать любой элемент const в hash_multiset. |
|
Тип знакового целого числа, который содержит различие между 2 итераторами, только элементы внутри того же hash_multiset. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать и изменять любой элемент в hash_multiset. |
|
Тип, который предоставляет объект функции, можно сравнивать 2 ключа сортировки для определения относительный порядок 2 элементов в hash_multiset. |
|
Тип, который описывает объект, хранящийся в качестве элемента hash_set его ресурсов в качестве ключа. |
|
Тип, который содержит указатель элемент в hash_multiset. |
|
Тип, который предоставляет ссылку на элемент хранящихся в hash_multiset. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать и изменять элемент в обращенном hash_multiset. |
|
Тип целого числа без знака, которое может быть представлено число элементов в hash_multiset. |
|
Тип, предоставляющий 2 объекта функции, бинарный предикат класса сравнения, можно сравнивать значения 2 элемента hash_multiset для определения относительный порядок и унарный предикат, хэширует элементы. |
|
Тип, который описывает объект, хранящийся в качестве элемента hash_multiset его ресурсов в качестве значения. |
Функции-члены
Возвращает итератор, принимаются первый элемент в hash_multiset. |
|
Возвращает итератор const слишком первый элемент в hash_multiset. |
|
Возвращает итератор const, принимаются расположение последующими последний элемент в hash_multiset. |
|
Удаляет все элементы hash_multiset. |
|
Возвращает количество элементов в hash_multiset ключ которого соответствует указанному ключу параметр- |
|
Возвращает итератор const слишком первый элемент в обращенном hash_multiset. |
|
Возвращает итератор const, принимаются расположение последующими последний элемент в обращенном hash_multiset. |
|
Вставляет элемент построен на месте в hash_multiset. |
|
Вставляет элемент построен на месте в hash_multiset, с подсказками размещения. |
|
Если тесты hash_multiset пусто. |
|
Возвращает итератор, принимаются расположение последующими последний элемент в hash_multiset. |
|
Возвращает пару итераторов соответственно на первый элемент в hash_multiset с ключом, который больше, чем указанный ключ и на первый элемент в hash_multiset с ключом, равно или больше значения ключа. |
|
Удаляет элемент или набор элементов в hash_multiset из заданных позиций или удалять элементы, соответствующие указанному ключу. |
|
Возвращает итератор слишком расположение элемента в hash_multiset, ключ имеет соответствующий указанному ключу. |
|
Возвращает копию объекта allocator, используемого для создания hash_multiset. |
|
Вставляет элемент или набор элементов в hash_multiset. |
|
Извлекает копию объекта сравнения, используемого для ключей, в hash_multiset. |
|
Возвращает итератор на первый элемент в hash_multiset с ключом, равно или больше, чем указанный ключ. |
|
Возвращает максимальную длину hash_multiset. |
|
Возвращает итератор слишком первый элемент в обращенном hash_multiset. |
|
Возвращает итератор, принимаются расположение последующими последний элемент в обращенном hash_multiset. |
|
Возвращает количество элементов в hash_multiset. |
|
Меняет местами элементы 2 hash_multiset s. |
|
Возвращает итератор на первый элемент в hash_multiset, ключом, равно или больше, чем указанный ключ. |
|
Извлекает копию объекта характеристик хэш, используемого в хэша и значения ключа элемента, в hash_multiset. |
Операторы
Заменяет элементы hash_multiset копией другого hash_multiset. |
Требования
Заголовок:<hash_set>
Пространство имен: stdext
См. также
Ссылки
Потокобезопасность в стандартной библиотеке C++
Библиотека стандартных шаблонов