Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

22.2. Поняття про контейнерні класи

Як ми вже зазначали вище, контейнери є об'єктами бібліотеки STL, основне призначення яких –зберігання даних. Контейнери, що визначаються в бібліотеці STL, представлено в табл. 22.1. У ній також вказано заголовки, які необхідно помістити у програму під час використання кожного контейнера. Незважаючи на те, що клас string також є контейнером, який дає змогу зберігати і обробляти символьні рядки, однак він у цю таблицю не включений і розглядається нижче у цьому розділі.

Табл. 22.1. Контейнери, визначені в бібліотеці STL

Контейнер

Опис

Заголовок

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-імен мають таке призначення:

size_type

Певний цілий тип, приблизно аналогічний типу size_t

reference

Посилання на елемент

const_reference

Константне (const-) посилання на елемент

iterator

Ітератор

const_iterator

Константний (const-) ітератор

reverse_iterator

Реверсивний ітератор

const_reverse_iterator

Константний реверсивний ітератор

value_type

Тип значення, що зберігається у контейнері (те саме, що і узагальнений тип myType)

allocator_type

Тип розподільника (пам'яті)

key_type

Тип ключа

key_compare

Тип функції, яка порівнює два ключі

mapped_type

Тип значення, що зберігається у відображенні (те саме, що і узагальнений тип myType)

value_compare

Тип функції, яка порівнює два значення

Оскільки в одному розділі неможливо розглянути всі контейнери, в наступних розділах ми представимо тільки три з них: vector, list і map. Якщо Ви зрозумієте, як працюють ці три контейнери, у Вас не буде проблем з використанням інших.