How do I code a simple integer circular buffer in C/C++?

I see a lot of templates and complicated data structures for implementing a circular buffer.

How do I code a simple integer circular buffer for 5 numbers?

I'm thinking in C is the most straightforward?

Thanks.

18
задан T.T.T. 1 September 2010 в 20:34
поделиться

2 ответа

Возьмите массив, arr, индекс idx и счетчик num.

Чтобы вставить foo, скажите arr[idx++] = foo; idx %= длина_буфера; число++;.

Чтобы прочитать элемент в foo, скажите foo = arr[(idx-num)%buffer_len]; номер--;.

Добавить проверки границ.

11
ответ дан 30 November 2019 в 07:12
поделиться

Если размер и тип данных вашего буфера фиксированы, вам нужен простой массив:

 int buffer[5];

Добавьте к нему пару указателей:

 int* start = &buffer[0];
 int* end   = &buffer[4]+1;
 int* input = start;
 int* output = start;
1
ответ дан 30 November 2019 в 07:12
поделиться