Files
eduplan-cpp-eltex/diag/tasks/03_ring/task.md
T

1.2 KiB

Задача 03 — кольцевой буфер (C++)

Кольцевой буфер фиксированной ёмкости — базовая структура для embedded и сетевого кода.

class RingBuffer {
public:
    explicit RingBuffer(size_t capacity);
    ~RingBuffer();
    bool   push(int v);       // false, если буфер полон (перезапись НЕ делать)
    bool   pop(int& out);     // false, если буфер пуст
    size_t size() const;
    size_t capacity() const;
    bool   empty() const;
    bool   full() const;
};

Требования:

  • O(1) на push/pop, никаких сдвигов элементов;
  • память выделяется один раз в конструкторе, освобождается в деструкторе;
  • поведение после заворачивания индексов (wrap-around) корректное;
  • копирование запрещать не обязательно, но двойного освобождения быть не должно.

Проверка: python3 grade.py 03. Критерий: все ok, ASAN/UBSAN чистые.