Контейнеров STL
Стандартная библиотека шаблонов (STL) предоставляет несколько контейнеров для хранения коллекцию связанных объектов.Контейнеры все классы шаблонов, позволяющее определить, какие объекты разрешены в контейнерах.Этот раздел предоставляет обзор контейнеров STL, помогающие решить, который наилучшим образом подходящий для своего контейнера.
2 Библиотеки STL, который необходимо выбрать один из: собственный STL и STL/CLR.Дополнительные сведения о STL/CLR см. в разделе Справочные материалы по STL/CLR.
Контейнеры STL можно разбить на категории 3, контейнеры последовательности, ассоциативные контейнеры и адаптеры контейнера.Эти категории и коллекции, которые принадлежат каждой категории, приведены здесь.Более подробные сведения можно найти в документации ссылки для контейнеров.
Контейнеры последовательности
Контейнеры последовательности поддерживают исходный порядок, вставляемых элементов.Это позволяет определить место вставки элемента в контейнере.
deque контейнер двойн-завершенной очереди () позволяет для быстрого вставок и удалений в начале и конце контейнера.Также можно случайно получить доступ к любой элемент быстро.
list предоставляет контейнер для быстрого вставок и удалений в любом месте в контейнере, но нельзя случайно получить доступ к элементу в контейнере.
vector контейнер ведет себя как массив, но будет увеличиваться автоматически по мере необходимости.
Дополнительные сведения о контейнерах последовательности см. в следующей таблице.
Контейнер |
Собственный STL |
STL/CLR |
---|---|---|
deque |
||
list |
||
vector |
Ассоциативные контейнеры
При указании характеристикой ассоциативных контейнеров, что элементы вставляются в стандартный заказ, как отсортированный по возрастанию.
Ассоциативные контейнеры можно группировать в 2 подмножеств: сопоставления и наборы.A mapиногда называют словарь, состоящий из пары " ключ-значение ".Ключ, используемый для упорядочения последовательности, а каким-либо образом, связанные с этим ключом.Например, a map может содержать уникальные ключи представления машинное каждое слово в текст и значениях, представляющее количество раз, машинное слово встречается в тексте.A set порядок по возрастанию просто контейнер уникальных элементов.
Оба map и set разрешить только один экземпляр ключа или элемента, который необходимо вставить в контейнер.Если несколько экземпляров элементов необходимы, воспользуйтесь multimap OR multiset.
Оба итератора сопоставления и поддержки двунаправленной наборов.Дополнительные сведения об итераторах см. Итераторы.
Пока не часть стандарта STL, формальный hash_map и hash_set часто используется для повышения при поиске раз.Эти контейнеры хранят их элементы, такие как хэш-таблицы, каждая запись в таблице, содержащий список связанный двунаправленным элементов.Для обеспечения наиболее быстрые время поиска, убедитесь, что алгоритм хэширования для элементов возвращает равномерно распределенные значения хэша.
Дополнительные сведения о ассоциативных контейнерах см. в следующей таблице.
Контейнер |
Собственный STL |
STL/CLR |
---|---|---|
hash_map |
||
hash_multimap |
||
hash_multiset |
||
hash_set |
||
map |
||
multimap |
||
multiset |
||
set |
Адаптеры контейнера
Адаптеры контейнера просто изменения приведенных выше контейнеров.Адаптеры контейнера не поддерживают итераторы.
priority_queue контейнер упорядочивал те, что элемент с самым высоким значением всегда является первым в очереди.
queue контейнер следовать семантике FIFO (ранее пришел - первым вышел ").Первый элемент inserted (отправлянно) в очередь первое для удаления (извлекается).
stack контейнер следовать семантике LIFO (последнего in, out).Последний элемент для вставки (отправлянно) в стек первый элемент, удаляемый (извлекается).
Поскольку адаптеры контейнера не поддерживают итераторы, их нельзя использовать с алгоритмом STL.Дополнительные сведения об алгоритмах см. в разделах Aлгоритмы.
Дополнительные сведения об адаптерах контейнера см. в следующей таблице.
Контейнер |
Собственный STL |
STL/CLR |
---|---|---|
priority_queue |
||
queue |
||
stack |
Требования для элементов-контейнеров
Элементы, добавленные в контейнер STL могут иметь любой тип объекта, который предоставляет открытый конструктор копии, открытый деструктор и открытый оператор присваивания.Деструктор не может создать исключение.Кроме того, ассоциативные как контейнеры set и map иметь открытый оператор сравнения быть определены, который по умолчанию operator<.Некоторые операции в контейнерах также могут потребовать открытого конструктора по умолчанию и открытого equivalence оператора.
Доступ к элементы контейнера
Элементы контейнеров осуществляется использование итераторов.Дополнительные сведения см. в разделе Итераторы.
Примечание |
---|
Можно также использовать для каждого внутри прохода по коллекциям STL.Дополнительные сведения см. в разделе Как Выполните итерацию по коллекции для каждого с STL. |