gpt4 book ai didi

c++ - 在环形缓冲区中向后循环的好方法是什么?

转载 作者:行者123 更新时间:2023-11-28 00:32:46 26 4
gpt4 key购买 nike

假设我有一个缓冲区:

static const int BUFFER_SIZE = 3; // for example
int buffer[BUFFER_SIZE];

我想遍历它

int index = 0;
for( ;; )
{
buffer[index] = ...;
index = (index + 1) % BUFFER_SIZE; // index = 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
}

但是如果我想向后循环遍历缓冲区会发生什么?例如:0, 2, 1, 0, 2, 1, ...

现在我正在这样做:

index  = (index <= 0) ? BUFFER_SIZE - 1 : index  - 1;

是否有更好的方法来执行这些操作?

最佳答案

本着您的第一个决定的精神,我们可以这样写:

int idx = 0; 
int i=0;
for (;;) {
buffer[idx] = ...;
i = (i+1) % BUFFER_SIZE;
idx = (BUFFER_SIZE - i) % BUFFER_SIZE;
}

关于c++ - 在环形缓冲区中向后循环的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com