Источник вдохновения - https://en.cppreference.com/w/cpp/container/vector.html
В рамках задачи предполагается, что элементы вектора имеют конструктор по умолчанию
Вектор Vector<T> (поддержку аллокаторов и итераторов пока не завезли) поддерживает:
- Конструкторы:
- Конструктор по умолчанию
Vector() - Конструктор по значению
Vector(size_t size), который принимает размер вектора - Конструктор копирования
Vector(const Vector& other) - Конструктор перемещения
Vector(Vector&& other) - Копирующее присваивание
Vector& operator=(const Vector& other) - Перемещающее присваивание
Vector& operator=(Vector&& other) noexcept - Деструктор
~Vector()
- Конструктор по умолчанию
Element accessметоды:- метод
at(size_t pos)дляconstиnonconstвекторов для доступа по индексу (выбрасывает исключение при выходе за пределы вектора) - метод
operator[]дляconstиnonconstвекторов для доступа по индексу (не выбрасывает исключений) - метод
front()дляconstиnonconstвекторов, возвращающий ссылку на первый элемент массива (Внимание! Отклонение от стандарта, реализован без использования итераторов) - метод
back()дляconstиnonconstвекторов, возвращающий ссылку на первый элемент массива (Внимание! Отклонение от стандарта, реализован без использования итераторов) - метод
data()дляconstиnonconstвекторов, возвращающий сырой указатель на массив данных вектора
- метод
Capacityметоды:- метод
size(), возвращающий текущее число элементов в векторе - метод
reserve(), аллоцирующий память - метод
capacity(), возвращающий число элементов, под которые аллоцирована память (>= size())
- метод
Modifiersметоды:- метод
push_back(value), работает с lvalue и rvalue, вставляет элемент в конец вектора - метод
resize(size_t count), реаллоцирует память с новым capacity = count
- метод
Тесты позаимствованы из задачи cow_vector из курса Advanced C++
Для компиляции выполните команду:
g++ -std=c++17 test_vector.cpp -o test_vector