C++ и Python

Дек на основе двух векторов (6)

Дек на основе двух векторов

Условие

Напишите шаблонный класс Deque, содержащий набор методов:

  • конструктор по умолчанию
  • константный метод Empty, возвращающий true, если дек не содержит ни одного элемента
  • константный метод Size, возвращающий количество элементов в деке
  • T& operator[](size_t index) и const T& operator[](size_t index) const, возвращающий ссылку на элемент с индексом index
  • константный и неконстантный метод At(size_t index), возвращающий ссылку на элемент с индексом index и генерирующий стандартное исключение std::out_of_range, если индекс больше или равен количеству элементов в деке
  • константные и неконстантные версии методов Front и Back, возвращающих ссылки на первый и последний элемент дека соответственно
  • методы PushFront и PushBack

Неконстантные версии методов должны позволять изменять соответствующий элемент дека.

Для реализации заведите внутри класса Deque два вектора: в один осуществляйте вставку в методе PushFront, а в другой - в методе PushBack.

Заголовочный файл, который вы пришлете на проверку, не должен подключать файлы <list>, <deque>, <set>, <map>. Если у вас будет подключен один из этих файлов, вы получите ошибку компиляции.

Как тестировать локально

mkdir build; cd build
cmake ..; cmake --build .
ctest -V