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.
Возьмите массив, arr
, индекс idx
и счетчик num
.
Чтобы вставить foo
, скажите arr[idx++] = foo; idx %= длина_буфера; число++;
.
Чтобы прочитать элемент в foo
, скажите foo = arr[(idx-num)%buffer_len]; номер--;
.
Добавить проверки границ.
Если размер и тип данных вашего буфера фиксированы, вам нужен простой массив:
int buffer[5];
Добавьте к нему пару указателей:
int* start = &buffer[0];
int* end = &buffer[4]+1;
int* input = start;
int* output = start;