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


Контейнеров STL

Стандартная библиотека шаблонов (STL) предоставляет несколько контейнеров для хранения коллекцию связанных объектов.Контейнеры все классы шаблонов, позволяющее определить, какие объекты разрешены в контейнерах.Этот раздел предоставляет обзор контейнеров STL, помогающие решить, который наилучшим образом подходящий для своего контейнера.

2 Библиотеки STL, который необходимо выбрать один из: собственный STL и STL/CLR.Дополнительные сведения о STL/CLR см. в разделе Справочные материалы по STL/CLR.

Контейнеры STL можно разбить на категории 3, контейнеры последовательности, ассоциативные контейнеры и адаптеры контейнера.Эти категории и коллекции, которые принадлежат каждой категории, приведены здесь.Более подробные сведения можно найти в документации ссылки для контейнеров.

Контейнеры последовательности

Контейнеры последовательности поддерживают исходный порядок, вставляемых элементов.Это позволяет определить место вставки элемента в контейнере.

deque контейнер двойн-завершенной очереди () позволяет для быстрого вставок и удалений в начале и конце контейнера.Также можно случайно получить доступ к любой элемент быстро.

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

vector контейнер ведет себя как массив, но будет увеличиваться автоматически по мере необходимости.

Дополнительные сведения о контейнерах последовательности см. в следующей таблице.

Контейнер

Собственный STL

STL/CLR

deque

deque Class

deque (STL/CLR)

list

list Class

list (STL/CLR)

vector

vector Class

vector (STL/CLR)

Ассоциативные контейнеры

При указании характеристикой ассоциативных контейнеров, что элементы вставляются в стандартный заказ, как отсортированный по возрастанию.

Ассоциативные контейнеры можно группировать в 2 подмножеств: сопоставления и наборы.A mapиногда называют словарь, состоящий из пары " ключ-значение ".Ключ, используемый для упорядочения последовательности, а каким-либо образом, связанные с этим ключом.Например, a map может содержать уникальные ключи представления машинное каждое слово в текст и значениях, представляющее количество раз, машинное слово встречается в тексте.A set порядок по возрастанию просто контейнер уникальных элементов.

Оба map и set разрешить только один экземпляр ключа или элемента, который необходимо вставить в контейнер.Если несколько экземпляров элементов необходимы, воспользуйтесь multimap OR multiset.

Оба итератора сопоставления и поддержки двунаправленной наборов.Дополнительные сведения об итераторах см. Итераторы.

Пока не часть стандарта STL, формальный hash_map и hash_set часто используется для повышения при поиске раз.Эти контейнеры хранят их элементы, такие как хэш-таблицы, каждая запись в таблице, содержащий список связанный двунаправленным элементов.Для обеспечения наиболее быстрые время поиска, убедитесь, что алгоритм хэширования для элементов возвращает равномерно распределенные значения хэша.

Дополнительные сведения о ассоциативных контейнерах см. в следующей таблице.

Контейнер

Собственный STL

STL/CLR

hash_map

hash_map Class

hash_map (STL/CLR)

hash_multimap

hash_multimap Class

hash_multimap (STL/CLR)

hash_multiset

hash_multiset Class

hash_multiset (STL/CLR)

hash_set

hash_set Class

hash_set (STL/CLR)

map

map Class

map (STL/CLR)

multimap

multimap Class

multimap (STL/CLR)

multiset

multiset Class

multiset (STL/CLR)

set

set Class

set (STL/CLR)

Адаптеры контейнера

Адаптеры контейнера просто изменения приведенных выше контейнеров.Адаптеры контейнера не поддерживают итераторы.

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

queue контейнер следовать семантике FIFO (ранее пришел - первым вышел ").Первый элемент inserted (отправлянно) в очередь первое для удаления (извлекается).

stack контейнер следовать семантике LIFO (последнего in, out).Последний элемент для вставки (отправлянно) в стек первый элемент, удаляемый (извлекается).

Поскольку адаптеры контейнера не поддерживают итераторы, их нельзя использовать с алгоритмом STL.Дополнительные сведения об алгоритмах см. в разделах Aлгоритмы.

Дополнительные сведения об адаптерах контейнера см. в следующей таблице.

Контейнер

Собственный STL

STL/CLR

priority_queue

priority_queue Class

priority_queue (STL/CLR)

queue

queue Class

queue (STL/CLR)

stack

stack Class

stack (STL/CLR)

Требования для элементов-контейнеров

Элементы, добавленные в контейнер STL могут иметь любой тип объекта, который предоставляет открытый конструктор копии, открытый деструктор и открытый оператор присваивания.Деструктор не может создать исключение.Кроме того, ассоциативные как контейнеры set и map иметь открытый оператор сравнения быть определены, который по умолчанию operator<.Некоторые операции в контейнерах также могут потребовать открытого конструктора по умолчанию и открытого equivalence оператора.

Доступ к элементы контейнера

Элементы контейнеров осуществляется использование итераторов.Дополнительные сведения см. в разделе Итераторы.

ПримечаниеПримечание

Можно также использовать для каждого внутри прохода по коллекциям STL.Дополнительные сведения см. в разделе Как Выполните итерацию по коллекции для каждого с STL.

См. также

Ссылки

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

<sample container>