контейнер, упрощенная версия std::vector, написана обертка указателя. Используется идиома RAII.
☝️ Используемый стек:
STL
ООП
move - семантика
rvalue-ссылки
☝️ Системные требования:
C++17 и выше
👉 Использование: Загрузить файлы проекта в среду разработки для сборки (VisualStudio). Пример использования расположен в main.cpp (показано в тестах).
Реализованы конструкторы:
- По умолчанию. Создаёт пустой вектор с нулевой вместимостью. Не выделяет динамическую память и не выбрасывает исключений.
- Параметризованный конструктор, создающий вектор заданного размера. Элементы вектора инициализированы значением по умолчанию для типа Type. Вектор имеет одинаковые размер и вместимость.
- Конструктор из std::initializer_list. Элементы вектора содержат копию элементов initializer_list. Имеет размер и вместимость, совпадающую с размерами и вместимостью переданного initializer_list.
- Конструктор копирования. Копия вектора имеет вместимость, достаточную для хранения копии элементов исходного вектора.
- Реализован конструктор по rvalue ссылке.
Реализованы методы:
- GetSize для получения количества элементов в векторе (не выбрасывает исключений).
- GetCapacity для получения вместимости вектора (не выбрасывает исключений).
- IsEmpty, сообщающий, пуст ли вектор (не выбрасывает исключений).
- At для доступа к элементу вектора по его индексу, аналог метода at класса vector. В случае выхода индекса за пределы массива выбрасывает исключение std::out_of_range.
- Clear для очистки массива без изменения его вместимости (не выбрасывает исключений).
- Resize для изменения количества элементов в массиве. Метод предоставляет строгую гарантию безопасности исключений.
- begin, end, cbegin и cend, возвращающие итераторы на начало и конец массива (не выбрасывают исключений). В качестве итераторов используются указатели.
- PushBack, добавляющий элемент в конец вектора. Обеспечивает строгую гарантию безопасности исключений.
- PopBack, удаляющий последний элемент вектора (не выбрасывает исключений).
- Insert, вставляющий элемент в произвольное место контейнера. Обеспечивает базовую гарантию безопасности исключений.
- Erase, удаляющий элемент в произвольной позиции вектора. Обеспечивает базовую гарантию безопасности исключений.
- swap, обменивающий содержимое вектора с другим вектором (не выбрасывает исключений). Имеет время выполнения O(1).
- Reserve задает ёмкость вектора.
- оператор [] для доступа к элементу вектора по его индексу (не выбрасывает исключений). Имеет две версии — константную и не константную. Для корректной работы оператора индекс элемента массива не должен выходить за пределы массива.
- оператор присваивания. Обеспечивает строгую гарантию безопасности исключений.
- операторы == и !=, <, >, <=, >=, необходимые для булевых операций, а также реализована возможность перемещения. При разрушении вектора освобождается память, занимаемая его элементами.