Тестовое задание.
Условие:
Тестовое задание по С++ Целевая платорма : x86 Студия разработки : любая Файл сборки : cmake
Разработку вести с использованием системы контроля версий GIT
Итоговый проект выложить на github / gitlab c предоставлением ссылки
Написать класс/ы для реализации контейнера, совместимого с STL, использующий метод хранения данных как циклическая очередь. Размер контейнера задавать статически на этапе компиляции, должен быть предусмотрен механизм контроля добавления элементов в очередь на переполнения очереди. Подразумевается, что если очередь полная, то перезаписывать самые старые внесенные в очередь данные.
Выолнение: Было решено реализовывать очередь на основе массива, так как размер статический. Контроль за количеством элементов осуществляется при помощи двух индексов на начало и конец очереди соответственно. Добавление элементов в очередь реализовано таким образом, чтобы индекс начала очереди всегда указывал на самые старые внесённые данные. Таким образом, удаляя из начала очереди, можно выполнить сразу два условия: FIFO (условие очереди) и замещение самых старых внесенных данных при переполнении. Также был реализован класс итератора для совместимости с STL. Дополнительно реализованы некоторые операторы для работы со стандартной библиотекой алгоритмов и проверена совместимость с последними.
Использование: enqueue() & dequeue() - для добавления и удаления элементов соответственно at() - для доступа к элементам очереди empty(), size(), full() - для проверки состояния очереди clear() - для очистки очереди Есть перегрузка оператора << для вывода в cout
Для класса итератора реализованы операторы сравнения и постфиксное\префиксное увеличение\уменьшение
P.S. Не убирал дебажный код, может оказаться полезным для тестирования.