hash_multimap Class
![]() |
---|
Этот API устарел.Альтернативы unordered_multimap Class. |
Расширение класса контейнера hash_multimap стандартной библиотеки шаблонов и используется для хранения и быстрого получения данных из коллекции, в которой каждый элемент пары, которой принадлежит ключ сортировки, значение которого не должны быть уникальными и связанное значение данных.
template <
class Key,
class Type,
class Traits=hash_compare<Key, less<Key> >,
class Allocator=allocator<pair <const Key, Type> >
>
class hash_multimap
Параметры
Ключ
Тип данных ключа, которые необходимо сохранить в hash_multimap.Тип
Тип данных элемента, который необходимо сохранить в hash_multimap.Traits
Тип, который включает 2 объекта функции, один из класса Traits, который может сравнить 2 значений элементов как ключи сортировки для определения их относительного порядка и хэш-функции, значения ключей унарные сопоставления предиката элементов в целые числа без знака типа size_t.Этот аргумент является необязательным и hash_compare*<Key, less<Key> >* значение по умолчанию.Allocator
Тип, представляющий сохраненные объект выделения, инкапсулирующий сведения о распределении hash_multimap и освобождение памяти.Этот аргумент является необязательным и значение по умолчанию allocator*<*pair *<*const пользуется ключом, Type> >.
Заметки
Hash_multimap:
Ассоциативный контейнер, который контейнер переменный размер, который поддерживает - это фактическое получение значений элементов на основе связанном значению ключа.
Reversible, поскольку он обеспечивает двунаправленный итератор, чтобы получить доступ к его элементы.
Хэшированные, поскольку его элементы группированы в сегменты на основе значения хэш-функции, применяемых к значениям ключей элементов.
Несколько предложений, поскольку его элементов не обязательно должны иметь уникальные ключи, так что одно значение ключа может иметь много значений данных элементов, связанных с ним.
Контейнера пар ассоциативный, так как значения элемента отличаются от значений ключей.
Класс шаблона, поскольку она обеспечивает функциональные возможности универсален и, следовательно, не зависящий от конкретного типа данных, содержащихся как элементы или ключи.Типы данных, используемые для элементов и ключей вместо, определенные как параметры в шаблоне класса вместе с функцией и распределитель сравнения.
Основное преимущество перед сортировкой хэширования большую эффективность; успешное хэширование выполняет вставки, удаления и поиска в константные среднем времени по сравнению с временем пропорциональным к логарифму количество элементов в контейнере для методов сортировки.Значение элемента в hash_multimap, но не связанное с ним значение ключа, могут быть изменены напрямую.Вместо этого значения ключей, связанных с элементами, должны быть удалены старыми и новыми значениями ключей связать с новые элементы.
Выбор типа контейнера должен быть основан на типе обычно поиск и вставку, необходимые приложению.Хэшированные ассоциативные контейнеры оптимизированы для операций уточняющего запроса, вставки и удаления.Функции-члены, которые явно поддерживают эти операции эффективны при использовании с хорошо-, предназначенное хэш-функции, при выполнении их во времени, на средней константы и не зависит от количества элементов в контейнере.Хэш-функция создает однородное распределение, предназначенное хорошо- хэшируется значений и свернуть число конфликтов, когда говорят, что происходит конфликт, когда определенные значения ключей сопоставлены хэшируется в одно и то же значение.В наихудшем случае с самым плохим возможным хэш-функции, число операций пропорционально количеству элементов в последовательности (линейном времени).
Hash_multimap должно быть ассоциативным контейнером выбора, когда условия связывание значений с своими ключами содержимое приложением.Модель для данного типа структуры упорядоченный список ключевых слов, используя связанные строковые значения, предоставляющий, указывает определения, где слова всегда однозначно не определены.Если вместо, ключевые слова unique были заданы, так как ключи было уникальным, тогда hash_map является контейнером выбора.С другой стороны, если только что был сохранен список слов, hash_set будет правильным контейнером.Если несколько вхождений слова были разрешены, то hash_multiset будет соответствующей структурой контейнера.
Hash_multimap упорядочивает последовательность, он контролирует путем вызова хранимой Traits хэш объект типа value_compare.Этот, сохраненный объект можно получить доступ путем вызова функции-члена key_comp.Такой объект функции должен вести себя так же, как и объект класса hash_compare<Key, less*<Key> >.В частности, для всех значений _Key типа Ключ, вызов Traits(_Key)* создает распределение значений типа size_t.
Как правило, элементы должны быть просто меньше, чем эквивалентный установить этот порядок. таким образом, что заданный какие-либо 2 элемента он может быть определен этому, что они эквивалентны (в том смысле, что ни одно из значений не меньше другого) или что один меньше другого.Это приводит к тому, что упорядочение между элементами неравнозначными.На более технической заметку, функция сравнения является строгий порядок предикат, накладывают слабых в стандартном математические смысле.Binary предикат f(x,y) объект функции, имеется 2 объекта аргумента x и y, а возвращаемое значение из true или false.Упорядочение наведенный на hash_multimap строгие слабые приказывающ если предикат irreflexive бинарный, антисимметрическ и транзитивн и если сравнение транзитивна, где 2 объекта x и y, определенные для быть эквивалентны, когда и f(x,y) и f(y,x) имеет значение false.Если более строгое условие равенства между ключами заменяет любая из эквивалентности, то сортировка будет итогом (в том смысле, что все элементы упорядочиваются по отношению друг к другу) и соответствующие ключи, которые будут indiscernible друг от друга.
Фактический порядок элементов в контролируемых зависит от последовательности хэш-функции, функция упорядочения и текущий размер хэш-таблицы, хранящихся в объект-контейнере.Нельзя определить текущий размер хэш-таблицы, поэтому обычно нельзя прогнозировать порядок элементов в управляемой последовательности.Вставка элементов объявляет никаких итераторы и удаление элементов делает недействительным только те итераторы, которые специально указали на удаленных элементов.
Итератор предоставленный классом hash_multimap двунаправленный итератор, но член класса действует insert и hash_multimap имеет версии, принимающие в качестве параметров шаблона более простой итератор ввода, в котором требования к функциям минимальне, чем те гарантированные классом двухнаправленных итераторов.Другие понятия итератора семейство формы, связанную уточнениями в их функциональности.Каждое понятие итератора имеет собственное hash_multimap требований и алгоритмы, которые работают с ними ограничение сусла их предположений требованиям, предоставленные этим типом итератора.Оно может быть требуется итератор ввода может быть разыменован для ссылки на объект и что он может быть увеличен до следующего итератору в последовательности.Это минимальное hash_multimap функциональности, однако оно достаточно для общения значение о диапазоне итераторов [_First, _Last) в контексте функции-члены.
В Visual C++ .NET 2003 <hash_map> элементы файлов заголовков и <hash_set> больше не находятся в пространстве имен std, но скорее перейти на пространство имен stdext.Дополнительные сведения см. в разделе Пространство имен stdext.
Конструкторы
Создает список определенного размера или с элементами определенного значения или с определенным allocator или в виде копии другого hash_multimap. |
Определения типов
Тип, представляющий класс allocator для объекта hash_multimap. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать элемент const в hash_multimap. |
|
Тип, который предоставляет указатель на элемент const в hash_multimap. |
|
Тип, который предоставляет ссылку на элемент const, хранящиеся в hash_multimap для чтения и для выполнения операций const. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать любой элемент const в hash_multimap. |
|
Тип знакового целого числа, который может использоваться для представления hash_multimap число элементов в диапазоне между элементами указал к итераторам. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать или изменять любой элемент hash_multimap. |
|
Тип, который предоставляет объект функции, который может сравнить 2 ключа сортировки, чтобы указать относительный порядок элементов в hash_multimap2. |
|
Тип, описывающий объект ключа сортировки, который составляет каждый элемент hash_multimap. |
|
Тип, представляющий тип данных, содержащихся в hash_multimap. |
|
Тип, который предоставляет указатель элемент в hash_multimap. |
|
Тип, который предоставляет ссылку на элемент, хранящийся в hash_multimap. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать или изменяет элемент в обращенном hash_multimap. |
|
Тип целого числа без знака, которое может представлять число элементов в hash_multimap. |
|
Тип, который предоставляет объект функции, который может сравнить 2 элемента как ключи сортировки для определения их относительного порядка в hash_multimap. |
Функции элементов
Возвращает итератор адресацию первый элемент в hash_multimap. |
|
Возвращает итератор адресации const первый элемент в hash_multimap. |
|
Итератор, который соответствует const возвращает расположение преуспевая последний элемент в hash_multimap. |
|
Удаляет все элементы hash_multimap. |
|
Возвращает количество элементов в hash_multimap ключ которого соответствует параметр- указанному ключу. |
|
Возвращает итератор адресации const первый элемент в обращенном hash_multimap. |
|
Итератор, который соответствует const возвращает расположение преуспевая последний элемент в обращенном hash_multimap. |
|
Вставляет элемент в hash_multimap, построенный на месте. |
|
Вставляет построенный элемент в размещение в hash_multimap с подсказкой размещения. |
|
Тесты, если hash_multimap пустым. |
|
Возвращает итератор, который решает расположение преуспевая последний элемент в hash_multimap. |
|
Возвращает итератор, который решает расположение преуспевая последний элемент в hash_multimap. |
|
Удаляет элемент или диапазон элементов в hash_multimap из заданных позиций |
|
Возвращает итератор адресацию расположение элемента в hash_multimap, который содержит ключевое эквивалентно заданному ключу. |
|
Возвращает копию объекта allocator, используемого для построения hash_multimap. |
|
Вставляет элемент или диапазон элементов в hash_multimap в заданной позиции. |
|
Извлекает копию объекта сравнения, используемый для ключей заказа в hash_multimap. |
|
Возвращает итератор к первому элементу в hash_multimap, со значением ключа, которое равно или больше одной из указанного ключа. |
|
Возвращает максимальную длину hash_multimap. |
|
Возвращает итератор адресацию первый элемент в обращенном hash_multimap. |
|
Возвращает итератор, который решает расположение преуспевая последний элемент в обращенном hash_multimap. |
|
Указывает новый размер для hash_multimap. |
|
Обменивает элементы 2 hash_multimap. |
|
Возвращает итератор к первому элементу в hash_multimap, со значением ключа, которое больше одной из указанного ключа. |
|
Извлекает копию объекта сравнения, используемого в значения элемента заказа в hash_multimap. |
Операторы
Заменяет элементы hash_multimap копией другого hash_multimap. |
Требования
заголовок: <hash_map>
Stdext пространство имен:
См. также
Ссылки
Потокобезопасность в стандартной библиотеке C++
Стандартная библиотека шаблонов