Rationale Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 8. Boost.Circular Buffer
Основной мотивацией<circular_buffer >было создание контейнера, который быработал бесшовно с STL .
Кроме того, дизайн<circular_buffer >был основан на следующих принципах:
максимумэффективность для предполагаемых применений.
Применяется дляобщего назначения .
Поведение буфера как можно более интуитивно .
Подходит дляспециализации с помощью адаптеров.<circular_buffer_space_optimized >является примером адаптера.
[]. (Поддержка Debug для деталей.)
Для достижения максимальной эффективности<circular_buffer >и<circular_buffer_space_optimized >сохраняют свои элементы всмежных областях памяти , что затем позволяет:
Использование фиксированной памяти и отсутствие скрытого или неожиданного выделения памяти.
Быстрая вставка и удаление элементов спереди и сзади.
Быстрый постоянный случайный доступ элементов.
Пригодность для критически важных приложений в режиме реального времени и производительности.
Возможные применения кругового буфера включают:
Хранениепоследних полученных образцов , перезаписывание самых старых по мере поступления новых образцов.
В качестве базового контейнера дляограниченного буфера (см. пример Ограниченного буфера, код наcircular_buffer_bound_example.cpp ).
Типкэша , хранящего заданное число последних вставленных элементов.
Эффективная фиксированная емкостьFIFO (First In, First Out) ,
Эффективная фиксированная емкостьLIFO (Last In, First Out) очередь, которая удаляет самые старые (вставленные в качестве первых) элементы при заполнении.
Статья Rationale раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 8. Boost.Circular Buffer может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 8. Boost.Circular Buffer ::