
- •Вирази і оператори.
- •Логічні оператори.
- •Оператор розгалуження.
- •Оператор вибору.
- •Арифметичні операції. Пріоритет виконання.
- •Вказівники константи.
- •Вказівники змінні.
- •Функції.
- •Функція для роботи з файлами.
- •Передача аргументів у функцію.
- •Значення, яке повертає функція.
- •Рекурсивні функції.
- •Блоки і область видимості змінних.
- •Оператори повторення.
- •Структури. Вкладені структури.
- •Створення класів.
- •Управління виконанням програм.
- •Одновимірні масиви даних.
- •Двовимірні масиви даних.
- •Створення масивів з використанням вказівників.
- •Алгоритми сортування масивів.
- •Рядки і операції над ними.
- •Функції введення-виведення.
- •Конструктори, деструктори.
- •Класи. Успадкування.
- •Класи. Поліморфізм.
- •Класи. Інкапсуляція.
- •Вказівник this.
- •Перевантаження операцій та операторів.
- •Поліморфізм і віртуальні функції.
- •Стандартний клас string.
- •Стандартний клас queue.
- •Стандартний клас vector.
- •Стандартний клас list.
- •Стандартний клас stack.
- •Створення і використання шаблонів функцій та класів.
- •Стандартна бібліотека шаблонів (stl)
- •Доступність методів класу.
- •Конструктор та деструктор класів.
- •Наслідування класів.
- •Використання просторів імен.
- •Шаблони функцій.
- •Шаблони класів.
- •Алгоритми стандартної бібліотеки stl.
- •Динамічні структури типу стек.
- •Динамічні структури типу однонаправлений список.
- •Динамічні структури типу двонаправлений список.
- •Сортування масивів із використанням вказівників.
Стандартний клас vector.
#include <vector>
Клас vector описує вид послідовності, що підтримує довільний доступ до своїх елементів. Він допускає автоматичне збільшення розміру (але не зменшення!), а також забезпечує операції вставки й видалення елементів, а також переміщення односпрямованих ітераторів по елементах масиву.
Стандартний клас list.
#include <list>
Клас list визначає різновид послідовності, що підтримує двунаправленные ітератори. У цьому класі передбачені операції вставки й стирання в довільному місці послідовності з автоматичним управлінням пам'яті. На відміну від інших різновидів послідовності, клас list допускає лише послідовний доступ до елементів списку, використовуючи двунаправленный ітератор, що посилається на об'єкти класу T.
Стандартний клас 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() виштовхує зі стека елемент, розташований на вершині. Зверніть увагу на те, що всі ці операції реалізуються за допомогою виклику відповідного функції-члена класу, заданого в якості другого шаблонового параметра.
Створення і використання шаблонів функцій та класів.
Принцип роботи шаблонної функції
При створенні функцій іноді виникають ситуації, коли дві функції виконують однакову обробку, але працюють з різними типами даних (наприклад, одна використовує параметри типу 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> // параметр за замовчуванням