hash_multiset Class
![]() |
---|
Этот API устарел.Альтернативы unordered_multiset Class. |
Расширение класса контейнера 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> >.* В частности, для значений типа Ключ весь ключ , вызовите Trait(ключ) создает распределение значений типа size_t.
Как правило, элементы должны быть просто меньше, чем эквивалентный установить этот порядок. таким образом, что заданный какие-либо 2 элемента он может быть определен этому, что они эквивалентны (в том смысле, что ни одно из значений не меньше другого) или что один меньше другого.Это приводит к тому, что упорядочение между элементами неравнозначными.На более технической заметку, функция сравнения является строгий порядок предикат, накладывают слабых в стандартном математические смысле.Binary предикат f(x,y) объект функции, имеется 2 объекта аргумента x и y, а возвращаемое значение из true или false.Упорядочение наведенный на hash_multiset строгие слабые приказывающ если предикат irreflexive бинарный, антисимметрическ и транзитивн и если сравнение транзитивна, где 2 объекта x и y, определенные для быть эквивалентны, когда и f(x,y) и f(y,x) имеет значение false.Если более строгое условие равенства между ключами заменяет любая из эквивалентности, то сортировка будет итогом (в том смысле, что все элементы упорядочиваются по отношению друг к другу) и соответствующие ключи, которые будут indiscernible друг от друга.
Фактический порядок элементов в контролируемых зависит от последовательности хэш-функции, функция упорядочения и текущий размер хэш-таблицы, хранящихся в объект-контейнере.Нельзя определить текущий размер хэш-таблицы, поэтому обычно нельзя прогнозировать порядок элементов в управляемой последовательности.Вставка элементов объявляет никаких итераторы и удаление элементов делает недействительным только те итераторы, которые специально указали на удаленных элементов.
Итератор предоставленный классом hash_multiset двунаправленный итератор, но член класса действует insert и hash_multiset имеет версии, принимающие в качестве параметров шаблона более простой итератор ввода, в котором требования к функциям минимальне, чем те гарантированные классом двухнаправленных итераторов.Другие понятия итератора семейство формы, связанную уточнениями в их функциональности.Каждое понятие итератора имеет собственное hash_multiset требований и алгоритмы, которые работают с ними ограничение сусла их предположений требованиям, предоставленные этим типом итератора.Оно может быть требуется итератор ввода может быть разыменован для ссылки на объект и что он может быть увеличен до следующего итератору в последовательности.Это минимальное hash_multiset функциональности, однако оно достаточно для общения значение о диапазоне итераторов [_First, _Last) в контексте функции члена класса.
В Visual C++ .NET 2003 <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 ключа сортировки, чтобы указать относительный порядок элементов в hash_multiset2. |
|
Тип, описывающий объект, хранящийся как элемент hash_set в его емкости как ключ сортировки. |
|
Тип, который предоставляет указатель элемент в hash_multiset. |
|
Тип, который предоставляет ссылку на элемент, хранящийся в hash_multiset. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать или изменяет элемент в обращенном hash_multiset. |
|
Тип целого числа без знака, которое может представлять число элементов в hash_multiset. |
|
Тип, предоставляющий 2 объекта функции является предикат класса сравнивает который может сравнить значения элементов hash_multiset 2 для определения их относительного порядка и унарный предикат этот хэш элементы. |
|
Тип, описывающий объект, хранящийся как элемент 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. |
|
Возвращает итератор к первому элементу в hash_multiset, с ключом, равно или больше, чем заданный ключ. |
|
Извлекает копию признаков хэш объект используемый для хэша и упорядочение значений ключей элементов в hash_multiset. |
Операторы
Заменяет элементы hash_multiset копией другого hash_multiset. |
Требования
заголовок: <hash_set>
Stdext пространство имен:
См. также
Ссылки
Потокобезопасность в стандартной библиотеке C++
Стандартная библиотека шаблонов