На этом шаге мы перечислим основные контейнерные классы.
Контейнеры представляют собой объекты STL, которые предназначены для хранения данных. Контейнеры, определяемые в STL, представлены таблице 1. В ней также указаны заголовки, которые необходимо включать в программу при использовании каждого контейнера.
Контейнер | Описание | Заголовок |
---|---|---|
bitset | Битовое множество | <bitset> |
deque | Дек (двусторонняя очередь, очередь с двусторонним доступом) | <deque> |
list | Линейный список | <list> |
map | Отображение. Хранит пары "ключ-значение", в которых каждый ключ связан только с одним значением | <map> |
multimap | Мультиотображение. Хранит пары "ключ-значение", в которых каждый ключ может быть связан с двумя или более значениями | <map> |
multiset | Множество, в котором каждый элемент необязательно уникален | <set> |
priority_queue | Приоритетная очередь | <queue> |
queue | Очередь | <queue> |
set | Множество, в котором каждый элемент уникален | <set> |
stack | Стек | <stack> |
vector | Динамический массив | <vector> |
Поскольку имена типов в объявлениях шаблонных классов произвольны, контейнерные классы объявляют typedef - версии этих типов, что конкретизирует имена типов. Некоторые из наиболее популярных typedef-имен приведены в таблице 2.
typedef-имя | Описание |
---|---|
size_type | Некоторый целый тип, приблизительно аналогичный типу size_t |
reference | Ссылка на элемент |
const_reference | Константная ссылка на элемент |
iterator | Итератор |
const_iterator | Константный итератор |
reverse_iterator | Реверсивный итератор |
const_reverse_iterator | Константный реверсивный итератор |
value_type | Тип значения, хранимого в контейнере |
allocator_type | Тип распределителя (памяти) |
key_type | Тип ключа |
key_compare | Тип функции, которая сравнивает два ключа |
mapped_type | Тип значения, сохраняемого в отображении |
value_compare | Тип функции, которая сравнивает два значения |
Со следующего шага мы начнем знакомиться с векторами.