如何在C/C++中编写简单的整数循环缓冲区?

T.T*_*.T. 18 c c++ arrays circular-buffer

我看到很多用于实现循环缓冲区的模板和复杂的数据结构.

如何为5个数字编码一个简单的整数循环缓冲区?

我在想C是最直截了当的吗?

谢谢.

Mat*_*hen 27

有一个buffer5个整数的数组.拥有ind下一个元素的索引.当你添加,做

buffer[ind] = value;
ind = (ind + 1) % 5;
Run Code Online (Sandbox Code Playgroud)

  • 从个人经验文件中,您需要注意ind不是负面的.如果将第二行更改为"ind =(max(0,ind)%1)+ 5;",则不必担心ind的负值. (6认同)
  • 你为什么不把ind设为uint?如果只涉及添加,那将更有效地解决您的问题 (4认同)

Bor*_*lid 11

取一个数组,arr一个索引idx和一个计数器num.

要插入foo,比方说arr[idx++] = foo; idx %= buffer_len; num++;.

foo比如读出一个项目foo = arr[(idx-num)%buffer_len]; num--;.

添加边界检查.