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


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.

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

hash_multiset

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

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

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 ключа сортировки, чтобы указать относительный порядок элементов в hash_multiset2.

key_type

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

указатели

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

Ссылка

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

reverse_iterator

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

size_type

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

value_compare

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

value_type

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

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

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.

insert

Вставляет элемент или диапазон элементов в 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.

upper_bound

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

value_comp

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

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

hash_multiset::operator=

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

Требования

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

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

См. также

Ссылки

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

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

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

члены<hash_set>

члены hash_multiset