Дек на основе двух векторов (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