/
AirLexa
/
04
Обзор
Документация
Войти
/
AirLexa
/
04
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_06/Task_3/Task_3.cpp
84 строки
2 KB
AirLexa
dz STL 1-2
02 мар 2026, 18:56
Верифицирован
02 мар 2026, 18:56
ef6b736
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> template<typename T> class my_vector { private: int size = 0; int capacity = 0; T* dim = nullptr; public: my_vector() { size = 0; capacity = 5; dim = new T[capacity](); } ~my_vector() { delete[] dim; } void push_back(T value) { if (size >= capacity) { // превышен размер, делаем новый массив capacity += 5; // больше на 5 элементов T* new_array = new T[capacity](); for (int i = 0; i < size; i++) // копируем туда все что было new_array[i] = dim[i]; delete[] dim; dim = new_array; // теперь у нас новый большой массив } dim[size++] = value; } T at(int n) { if (n < 0 || n >= size) throw std::exception("Некорректный индекс массива!"); return dim[n]; } void print() { std::cout << "size = " << size << std::endl; std::cout << "capacity = " << capacity << std::endl; std::cout << "dim = "; for (int i = 0; i < size; i++) std::cout << dim[i] << ' '; std::cout << std::endl << std::endl; } }; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); my_vector<int> mv; for (int i = 0; i < 12; i++) { mv.print(); mv.push_back(i); } mv.print(); try { std::cout << "mv.at(4) = " << mv.at(4) << std::endl; } catch(std::exception& e) { std::cout << "Ошибка! Индекс = 4!" << std::endl; } try { std::cout << "mv.at(-4) = " << mv.at(-4) << std::endl; } catch (std::exception& e) { std::cout << "Ошибка! Индекс = -4!" << std::endl; } try { std::cout << "mv.at(14) = " << mv.at(14) << std::endl; } catch (std::exception& e) { std::cout << "Ошибка! Индекс = 14!" << std::endl; } return 0; }