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