Смотрите на вопрос здесь: Скрытые Функции Visual Studio (2005-2010)?
Это показывает, как сделать это:
"При "Редакторе HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text" Создают Строку под названием "Руководства" со значением "RGB (255,0,0) 79", чтобы иметь красную строку в столбце 80 в текстовом редакторе".
Создайте новый класс, который инкапсулирует очередь и применяет ограничение на размер в новом классе.
Похоже, boost :: circuitclar_buffer делает то, что вы ищете:
Запись в полный буфер
Есть несколько варианты как справиться в том случае, если источник данных производит больше данных, чем может поместиться в буфер фиксированного размера:
- Сообщите источнику данных подождать, пока в буфере есть место (например, выброс исключения переполнения).
- Если самые старые данные больше важно, игнорируйте новые данные из источник, пока не останется место в буфер снова.
- Если самые последние данные являются наиболее важными, напишите поверх самые старые данные.
- Пусть продюсер отвечает за проверку размера буфер перед записью в него.
Очевидно, что
round_buffer
реализует третий вариант. Но это может быть менее очевидно не реализует другой вариант - особенно первые два. Можно получить создается впечатление, чтоround_buffer
должен реализовать первые три варианта и предлагаем механизм выбора среди них. Эта впечатление неверное. Вround_buffer
был разработан и оптимизирован, чтобы быть круглым (что означает перезапись самых старых данных, когда полный). Если такой механизм управления был включен, это просто усложняют дела и использование изкругового_буфера
будет вероятно, менее прямолинейно.
Предполагая, что под Queue
вы имеете в виду std :: queue
: очередь - это просто адаптер для некоторого базового контейнера, который прошло во время компиляции. Вы можете использовать контейнер, который уже делает то, что вы хотите. Лучше всего подходит кольцевой буфер, если вы можете найти тот, который поддерживает операции, необходимые для std :: queue
(я думаю, что push_back ()
, pop_front ( )
и size ()
, но я не проверял).