13

使用余数运算符,在不使用条件的情况下向前迭代循环缓冲区很容易......

iterator = (iterator + 1) % buffer_size;

我一生都无法弄清楚反向操作,向后迭代。

4

2 回答 2

17

对你有用iterator = (iterator + buffer_size - 1) % buffer_size吗?走一圈比一圈少一圈。

于 2010-08-09T05:16:54.700 回答
0

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

另一种解决方案是

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

于 2010-08-09T06:51:06.267 回答