Що таке кільцевої буфер?

Інтерфейс шаблонного класу

Для того щоб реалізація C ++ підтримувала будь-які типи даних, виконують шаблон:

  • Скидання буфера для очищення.
  • Додавання та видалення даних.
  • Перевірка повного/порожнього стану.
  • Перевірка поточного кількості елементів.
  • Перевірка загальної ємності контейнера.
  • Щоб не залишити ніяких даних після знищення буфера, використовують інтелектуальні покажчики C ++, щоб гарантувати, що користувачі можуть управляти даними.
  • У цьому прикладі буфер C ++ імітує більшу частину логіки реалізації C, але в результаті виходить набагато більш чистий і багаторазово використовується дизайн. Крім того, контейнер C ++ використовує “std::mutex” для забезпечення поточно-орієнтованої реалізації. При створенні класу виділяють дані для основного буфера і встановлюють його розмір. Це усуває накладні витрати, необхідні з реалізацією C. На відміну від неї, конструктор C ++ не викликає “reset”, оскільки вказують початкові значення змінних-членів, кругової контейнер запускається в правильному стані. Поведінка скидання повертає буфер порожній стан. У реалізації циклічного контейнера C ++ «size» та «capacity» повідомляє кількість елементів у черзі, а не розмір в байтах.