代码之家  ›  专栏  ›  技术社区  ›  Nick Strupat

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

  •  12
  • Nick Strupat  · 技术社区  · 14 年前

    在不使用条件的情况下,通过循环缓冲区向前迭代很容易使用remains运算符…

    iterator = (iterator + 1) % buffer_size;

    我一辈子都搞不清反向操作,反复迭代。

    2 回复  |  直到 14 年前
        1
  •  15
  •   Borealid    14 年前

    iterator = (iterator + buffer_size - 1) % buffer_size 为你工作?少走一条路。

        2
  •  0
  •   Omair    14 年前

    博雷利德的回答很有效。(注: iterator 最初设置为0)。

    另一个解决方案是

    iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size 具有 迭代器 设置为 buffer_size 最初。