Skip to content

bambrat/SimpleVector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

SimpleVector

контейнер, упрощенная версия 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 задает ёмкость вектора.
  • оператор [] для доступа к элементу вектора по его индексу (не выбрасывает исключений). Имеет две версии — константную и не константную. Для корректной работы оператора индекс элемента массива не должен выходить за пределы массива.
  • оператор присваивания. Обеспечивает строгую гарантию безопасности исключений.
  • операторы == и !=, <, >, <=, >=, необходимые для булевых операций, а также реализована возможность перемещения. При разрушении вектора освобождается память, занимаемая его элементами.

About

Simple Vector - контейнер, упрощенная версия std::vector

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published