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


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.

6ewecebk.collapse_all(ru-ru,VS.110).gifКонструкторы

hash_multimap

Создает список определенного размера или с элементами определенного значения или с определенным allocator или в виде копии другого hash_multimap.

6ewecebk.collapse_all(ru-ru,VS.110).gifОпределения типов

allocator_type

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

const_iterator

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

const_pointer

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

const_reference

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

const_reverse_iterator

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

difference_type

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

итератор

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

key_compare

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

key_type

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

mapped_type

Тип, представляющий тип данных, содержащихся в hash_multimap.

указатели

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

Ссылка

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

reverse_iterator

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

size_type

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

value_type

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

6ewecebk.collapse_all(ru-ru,VS.110).gifФункции элементов

begin

Возвращает итератор адресацию первый элемент в hash_multimap.

hash_multimap::cbegin

Возвращает итератор адресации const первый элемент в hash_multimap.

hash_multimap::cend

Итератор, который соответствует const возвращает расположение преуспевая последний элемент в hash_multimap.

clear

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

count

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

hash_multimap::crbegin

Возвращает итератор адресации const первый элемент в обращенном hash_multimap.

hash_multimap::crend

Итератор, который соответствует const возвращает расположение преуспевая последний элемент в обращенном hash_multimap.

hash_multimap::emplace

Вставляет элемент в hash_multimap, построенный на месте.

hash_multimap::emplace_hint

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

empty

Тесты, если hash_multimap пустым.

end

Возвращает итератор, который решает расположение преуспевая последний элемент в hash_multimap.

equal_range

Возвращает итератор, который решает расположение преуспевая последний элемент в hash_multimap.

erase

Удаляет элемент или диапазон элементов в hash_multimap из заданных позиций

find

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

get_allocator

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

insert

Вставляет элемент или диапазон элементов в hash_multimap в заданной позиции.

key_comp

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

lower_bound

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

max_size

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

rbegin

Возвращает итератор адресацию первый элемент в обращенном hash_multimap.

rend

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

size

Указывает новый размер для hash_multimap.

обмен

Обменивает элементы 2 hash_multimap.

upper_bound

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

value_comp

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

6ewecebk.collapse_all(ru-ru,VS.110).gifОператоры

hash_multimap::operator=

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

Требования

заголовок: <hash_map>

Stdext пространство имен:

См. также

Ссылки

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

Стандартная библиотека шаблонов

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

члены<hash_map>

члены hash_multimap