LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

там у тебя точно циклический буфер? он же в литературе RingBuffer.

такой буфер должен иметь минимальный интерфейс прмерно такой

class RingBuffer
{
  bool put(const Data&); ///положить в буфер
  bool get(Data&); ///взять из буфера
  int count(); ///сколько элементов данных в буфере
  bool is_empty(); ///пуст, get возвратит false
  bool is_full(); ///полон, put возвратит false
}

у тебя get вообще нет похоже и сама реализация странная.

реализация делается либо на двух индексах - текущее начала и конец буфера, или начало и размер, тогда int count() элементарен.

Исходная версия alysnix, :

там у тебя точно циклический буфер? он же в литературе RingBuffer.

такой буфер должен иметь минимальный интерфейс прмерно такой

class RingBuffer
{
  bool put(const Data&); ///положить в буфер
  bool get(Data&); ///взять из буфера
  int count(); ///сколько элементов данных в буфере
  bool is_empty(); ///пуст, get возвратит false
  bool is_full(); ///полон, put возвратит true
}

у тебя get вообще нет похоже и сама реализация странная.

реализация делается либо на двух индексах - текущее начала и конец буфера, или начало и размер, тогда int count() элементарен.