Упрощённый аналог вектора из стандартной библиотеки. Реализованы базовые методы контейнера, а также написан вспомогательный класс 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"