Итерация вперед по циклическому буферу без использования условного оператора проста с помощью оператора остатка ...
iterator = (iterator + 1) % buffer_size;
Я не могу при жизни понять обратноеоперация, повторяющаяся в обратном направлении.
Работает ли у вас iterator = (iterator + buffer_size - 1) % buffer_size? Иди на один меньше, чем все вокруг.
iterator = (iterator + buffer_size - 1) % buffer_size
ответ Бореалида работает.(примечание: iterator изначально установлено в 0).
iterator
Другое решение -
iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size с iterator, изначально установленным на buffer_size.
iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size
buffer_size