Задачі: Основи шаблонів¶
Практичні задачі на тему шаблонних функцій, шаблонних структур та перевантаження операторів потоків.
Формат задач
У кожній задачі дано сигнатуру функції або методу. Потрібно написати реалізацію замість ....
Простий рівень¶
Задача 1: Шаблонна функція min
Напишіть шаблонну функцію, що знаходить мінімум двох значень.
Приклади виклику:
Задача 2: Перевантажена функція для різних типів
Напишіть три перевантажені функції print_info, які виводять інформацію про число, текст та символ.
void print_info(int x) {
...
}
void print_info(const char* text) {
...
}
void print_info(char c) {
...
}
Вимоги:
- Для int: вивести "Number: X"
- Для const char*: вивести "Text: X"
- Для char: вивести "Character: X"
Середній рівень¶
Задача 3: Структура point з оператором <<
Створіть структуру point з полями x та y типу int.
Реалізуйте оператор виведення <<.
Приклад виводу:
Задача 4: Структура point з оператором >>
Розширьте задачу 3. Реалізуйте оператор введення >>.
Приклад використання:
Задача 5: Розширена структура student
Створіть структуру student з полями:
- id (int)
- age (int)
- grade (double)
Реалізуйте operator<< для виведення в форматі:
"Student #ID (age: A, grade: G)"
Задача 6: Шаблонна структура pair
Напишіть шаблонну структуру pair, яка зберігає два значення різних типів.
Приклади виклику:
Складний рівень¶
Задача 7: Універсальний print для вектора
Розширьте шаблонну структуру vector методом print(), який виводить всі елементи.
template<typename T>
struct vector {
T* data;
int size;
int capacity;
// ... інші методи ...
void print() {
...
}
};
Вимоги:
- Вивести елементи у форматі: [1, 2, 3]
- Працює з будь-яким типом, для якого визначено operator<<
Приклади:
Задача 8: 3D точка з відстанню
Розширьте структуру point на 3D:
- Додайте поле z типу int
- Оновіть operator<< для виведення (x, y, z)
- Оновіть operator>> для введення трьох координат
Задача 9: Контейнер для точок
Створіть vector<point> та:
1. Заповніть його зі списку ініціалізації (мінімум 3 точки)
2. Виведіть всі точки
3. Додайте нову точку через введення з std::cin
4. Виведіть остаточний список
Приклад коду:
Задача 10: Шаблонна функція swap
Напишіть шаблонну функцію, яка обмінює місцями два значення.
Приклади:
Попередня: Основи шаблонів