Skip to content

AnMarga/Program-Project-CPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

std::vector

Реализация

Источник вдохновения - 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages