В данном задании вам необходимо написать циклический буфер.
Циклический буфер — это структура данных, которая позволяет
вставлять/удалять элементы из любого конца за O(1)
и обращаться по индексу
к случайному элементу за O(1)
. Можно её рассматривать как некоторую модификацию вектора.
Список необходимых функций, требуемые гарантии исключений и вычислительная сложность операций указаны в хедере с заданием.
Операции вставки и удаления в середину, должны двигать не больше чем size / 2
элементов.
В этом задании можно считать, что перемещающие конструктор и оператор присваивания для типа T noexcept
.
Для простоты реализации итераторов всем модифицирующим структуру буфера операциям разрешено инвалидировать любые итераторы.