На этом шаге мы перечислим основные контейнерные классы.
Контейнеры представляют собой объекты 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 | Тип функции, которая сравнивает два значения |
Со следующего шага мы начнем знакомиться с векторами.