2010-08-09 3 views
11

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

iterator = (iterator + 1) % buffer_size;

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

+1

Это не просто, 'buffer_size - (iterator + 1)% buffer_size - 1'? – Anycorn

ответ

14

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

0

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

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

iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size с iterator набора к buffer_size первоначально.

 Смежные вопросы

  • Нет связанных вопросов^_^