如何在没有条件的情况下在循环缓冲区上向后迭代?
问题描述:
通过不使用条件的循环缓冲区向前迭代很容易与其余操作...如何在没有条件的情况下在循环缓冲区上向后迭代?
iterator = (iterator + 1) % buffer_size;
我不能为我的生活出了反向操作,向后遍历。
答
请问iterator = (iterator + buffer_size - 1) % buffer_size
是否适合您?走一条路,一路走来走去。
答
Borealid的答案有效。 (注意:iterator
最初设置为0)。
另一种解决方案是
iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size
与iterator
集到buffer_size
最初。
它不是简单的,'buffer_size - (iterator + 1)%buffer_size - 1'? – Anycorn 2010-08-09 05:13:03