如何在没有条件的情况下向后迭代循环缓冲区?

时间:2010-08-09 05:09:50

标签: iteration circular-buffer

使用余数运算符很容易通过循环缓冲区向前迭代而不使用条件...

iterator = (iterator + 1) % buffer_size;

我不能为我的生活找出反向操作,向后迭代。

2 个答案:

答案 0 :(得分:15)

iterator = (iterator + buffer_size - 1) % buffer_size适合您吗?少走一步。

答案 1 :(得分:0)

Borealid的回答有效。 (注意:iterator最初设置为0)。

另一种解决方案是

iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size 最初将iterator设置为buffer_size

相关问题