Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rgz_oop_03.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
169.47 Кб
Скачать

1.3Стандартна бібліотека шаблонів

Стандартна бібліотека шаблонів (STL) є основним компонентом стандартної бібліотеки ANSI/ISO для мови програмування С++. Цей компонент був розроблений в лабораторії Hewlett-Packard Олександром Степановим та Менгом Лі.

Бібліотека STL – це набір шаблонних класів і функцій загального призначення.

Ядро стандартної бібліотеки шаблонів включає три основні елемента: контейнери, алгоритми, ітератори. Вони працюють спільно один з другим, що допомагає отримувати готові рішення різноманітних завдань з програмування [1, 2, 6].

Контейнери – це об’єкти, що містять інші об’єкти.

У бібліотеці визначені послідовні та асоціативні контейнери. Кожний контейнерний тип визначає набір функцій, що можливо застосовувати до цього контейнеру. Узагальнену уяву контейнеру наведено на рис. 1.1.

В таблиці 1.1. наведений перелік основних контейнерів та заголовочні файли, де містяться ці контейнери.

Рисунок 1.1 – Узагальнена уява контейнеру

Для забезпечення кращого переміщення програми, при використанні стандартної бібліотеки шаблонів, необхідно завжди явно включати стандартний простір імен:

using namespace std;

Таблиця 1.1 – Контейнерні класи бібліотеки STL

Контейнер

Опис

Заголовок

bitset

Бітова множина

<bitset>

deque

Дек (двостороння черга, або черга з двостороннім доступом)

<deque>

list

Лінійний список

<list>

map

Відображення. Зберігає пари ключ/значення, де кожний ключ зв’язаний тільки з одним значенням

<тар>

multimap

Мультівідображення. Зберігає пари ключ/значення, де кожний ключ може бути зв’язаний з двома або з більшою кількістю значень

<map>

multiset

Множина, де кожний елемент необов’язково унікальний (мультімножина)

<set>

priority_queue

Приоритетна черга

<queue>

queue

Черга

<queue>

set

Множина, де кожний елемент унікальний

<set>

stack

Стек

<stack>

vector

Динамічний масив

<vector>

Алгоритми обробляють зміст контейнеру. Багато алгоритмів працює з діапазоном елементів контейнеру.

Алгоритми це частина STL, що більш всього нагадує традиційну бібліотеку функцій. Але головна їх різниця втому, що вони – шаблоні функції.

За рідким виключанням, ці шаблоні функції використовують аргументи-ітератори для маніпулювання послідовностями.

Для використання алгоритмів необхідно додати в програму заголовок <algorithm>.

Ітератори подібні покажчикам. Вони дозволяють циклічно опитувати зміст контейнеру практично таким же чином як це робиться за допомогою покажчика при циклічному опитуванні елементів масиву.

Ієрархію категорій ітераторів можна подати у вигляді трьох рядів. Для доступу до послідовності тільки для запису використовуйте наступний ряд:

а) ітератор виводу:

  • послідовний ітератор;

  • двонаправлений ітератор;

  • ітератор довільного доступу.

Стрілка праворуч означає “може бути замінений на”. Тому будь-який алгоритм, що визиває ітератор виводу, повинен, наприклад, працювати з послідовним ітератором, але не навпаки.

Для доступу до послідовності тільки для читання використовуйте наступний ряд:

б) ітератор вводу:

  • послідовний ітератор;

  • двонаправлений ітератор;

  • ітератор довільного доступу.

У даному випадку ітератор ввода найбільш слабкий в усіх категоріях.

Нарешті, для доступу до послідовності по читанню/запису можна використовувати такий ряд:

в) ітератор вводу:

  • двонаправлений ітератор;

  • ітератор довільного доступу.

Пам`ятайте, що покажчик на об`єкт завжди може служити в якості ітератора довільного доступу. Тому він може служити в якості любої із категорій ітератора, якщо він підтримує відповідний доступ по читанню/запису до послідовності, на яку він вказує.

Перелік методів контейнерних класів та основних алгоритмів наведений у [6,7,10].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]