Как вы повторяете обратный круговой буфер без условного?

Итерация вперед через круговой буфер без использования условного просто с оператором остатка...

iterator = (iterator + 1) % buffer_size;

Я не могу, чтобы жизнь меня определяла обратную операцию, итерацию назад.

Ответ 1

Работает ли iterator = (iterator + buffer_size - 1) % buffer_size для вас? Идите на один меньше, чем все вокруг.

Ответ 2

Работа с бореальными ответами. (примечание: iterator сначала установлено на 0).

Другим решением является

iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size с iterator в начале buffer_size.