Упрощённый аналог вектора из стандартной библиотеки. Реализованы базовые методы контейнера, а также написан вспомогательный класс RawMemory для упрощения работы с сырой памятью. Проект создан для того, чтобы на более глубоком уровне понимать внутреннее устройство контейнера из стандартной библиотеки
Конструктор по-умолчанию - создаёт пустой вектор
Vector<int> v;
Конструктор с параметром - создаёт вектор заданного размера (заполнен значениями по умолчанию)
Vector<int> v(5);
Копирующий конструктор и перемещающий конструктор
Vector<int> first_vector(5);
Vector<int> second_vector(first_vector);
Vector<int> third_vector(std::move(first_vector));
Операторы копирующего присваивания и перемещающего присваивания
Vector<int> first_vector(5);
Vector<int> second_vector = first_vector;
Vector<int> third_vector = std::move(first_vector);
Получение информации о ёмкости списка
Vector<int> v(5);
v.Size();
v.Capacity();
Swap - обмен содержимого вектора с другим вектором
Vector<int> first_vector(10);
Vector<int> second_vector(30);
first_vector.Swap(second_vector);
PushBack - добавление элемента в конец вектора
Vector<int> v;
v.PushBack(1);
v.PushBack(2);
PopBack - удаление последнего элемента в векторе
Vector<int> v;
vec.PopBack();
Добавление и удаление элемента в произвольном место вектора
Vector<int> v;
v.Insert(v.begin(), 1);
v.Insert(v.begin(), 2);
v.Erase(v.begin() + 1);
Reserve - резервирование места в векторе под новые элементы
//Резервирование памяти помогает избегать реаллокации
Vector<int> v;
v.Reserve(3);
a.PushBack(1);
a.PushBack(2);
a.PushBack(3); // Реаллокация памяти не произойдёт
Resize - изменение размера вектора
Vector<int> v;
v.PushBack(1);
v.PushBack(2);
v.PushBack(3);
v.Resize(6); // {1, 2, 3, 0, 0, 0}
a.Resize(2); // {1, 2}
**Emplace(EmplaceBack) - создание объекта в указанном месте **
Данный метод позволяет добавить элемент в вектор без копирований и перемещений, передавая параметры сразу конструктору
Vector<int> v;
v.Emplace(v.begin(), 1);
v.EmplaceBack(2);
Компилятор С++ с поддержкой стандарта C++17 или новее
Для испольования данного класса нужно скопировать файл vector.h в папку с проектом и подключить через директиву #include "vector.h"