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