Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zapitannya_do_Informatiki.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
141.69 Кб
Скачать
  1. Стандартний клас vector.

#include <vector>

Клас vector описує вид послідовності, що підтримує довільний доступ до своїх елементів. Він допускає автоматичне збільшення розміру (але не зменшення!), а також забезпечує операції вставки й видалення елементів, а також переміщення односпрямованих ітераторів по елементах масиву.

  1. Стандартний клас list.

#include <list>

Клас list визначає різновид послідовності, що підтримує двунаправленные ітератори. У цьому класі передбачені операції вставки й стирання в довільному місці послідовності з автоматичним управлінням пам'яті. На відміну від інших різновидів послідовності, клас list допускає лише послідовний доступ до елементів списку, використовуючи двунаправленный ітератор, що посилається на об'єкти класу T.

  1. Стандартний клас stack.

#include <stack>

По визначенню стек являє собою структуру даних, організовану за принципом LIFO (“last-n, last-out” — “останнім увійшов — першим вийшов”). Для елементів стека повинні бути визначені відносини “менше” й “дорівнює”.

За замовчуванням стек будується на основі дека. Однак його можна створити, використовуючи вектор або список. Для цього при визначенні об'єкта як шаблонний параметр варто вказати відповідний клас — vector або list.

stack<int, vector<int> > obj1;

stack<int, list<int> > obj2;

Якщо стек порожній, функція-член empty() повертає значення true. Функція-член size() повертає довжину стека, тобто кількість елементів, що втримуються в ньому. Функція-член top() повертає посилання на вершину стека, тобто на елемент, вставлений останнім. Функція-член push() заштовхує в стек новий елемент, а функція pop() виштовхує зі стека елемент, розташований на вершині. Зверніть увагу на те, що всі ці операції реалізуються за допомогою виклику відповідного функції-члена класу, заданого в якості другого шаблонового параметра.

  1. Створення і використання шаблонів функцій та класів.

Принцип роботи шаблонної функції

При створенні функцій іноді виникають ситуації, коли дві функції виконують однакову обробку, але працюють з різними типами даних (наприклад, одна використовує параметри типу int, а інша типу float або double). За допомогою механізму перевантаження функцій можна використовувати одне й те ж ім'я для функцій, що виконують різні дії і мають різні типи параметрів. Однак, якщо функції повертають значення різних типів, слід використовувати для них унікальні імена. Шаблона функція дає можливість повертати значення різних типів, що значно полегшує роботу і зменшує кількість змінних у коді.

Ініціалізація шаблонного класу

Оголошення та визначення шаблону функції починається ключовим словом template, за яким слідує укладений в кутові дужки і розділений комами непорожній список параметрів шаблону. Ця частина оголошення або визначення зазвичай називається заголовком шаблону. Увага, не плутайте параметр шаблону і шаблон класу. Якщо нам треба створити шаблон класу, з одним параметром типу int або char, шаблон класу буде мати такий вигляд:

template <typename T>

class Name

{

// тіло шаблону класу

};

де T — це параметр шаблону класу, який може приймати будь-який з вбудованих типів даних, те, що нам і потрібно.

А якщо параметр шаблону класу повинен бути користувацького типу, наприклад типу Array, де Array — це клас, що описує масив, шаблон класу буде мати наступний вигляд:

template <class T>

class Name

{

// тіло шаблону класу

};

Параметри шаблонів

Кожен параметр шаблону складається з службового слова class, за яким йде ідентифікатор. У контексті оголошення шаблону функції, службове слово class не несе ніякої особливого смислового навантаження. Справа в тому, що аналогічна конструкція використовується також і для оголошення шаблону класу, де ключове слово class грає свою особливу роль. У заголовку шаблону імена параметрів шаблону повинні бути унікальні. Параметрами шаблонів можуть бути: параметри-типи, параметри звичайних типів, параметри-шаблони. Для параметрів будь-якого типу можна вказувати значення за замовчуванням.

template <class T1, // параметр-тип

typename T2, // параметр-тип

int I, / / параметр звичайного типу

T1 DefaultValue, // параметр звичайного типу

template <class> class T3, // параметр-шаблон

class Character = char> // параметр за замовчуванням

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