如何创建一个圆形数组?

时间:2017-03-23 13:41:34

标签: c++

我正在尝试创建一个对数组的循环引用。例如,

float arr1[10] = {0,1,2,3,4,5,6,7,8,9};

然后我在循环中使用变量来访问数组的元素。

for (int i=0;i<10;i++){
    std::cout<<arr1[i]<<std::endl;
    //other processing using arr1[i] indexing
}

在这里,我只能使用i<=10。如果我想要i<=16i>10,那么索引应转到arr1[0]并从那里开始。什么是优选或推荐的方法来做到这一点?

4 个答案:

答案 0 :(得分:5)

您需要使用模运算符%14 % 10 = 4所以只需使用您用来访问它的索引即可。

答案 1 :(得分:0)

你应该像@ Jdman1699那样使用modulo运算符。在这里你可以找到一个例子:

int position; //the position you want to get
float out = arr1[position%10];

答案 2 :(得分:0)

对于特定的程序,我只是建议将你的基础for循环放在另一个for循环中(因为你似乎想多次打印出数组的所有元素,考虑到你的源代码)。这是因为访问元素 n 与访问元素 n + 10 没有什么不同。但是,如果您打算创建某种函数来访问数组的任何元素,我会使用模数运算符10。也许,

unsigned long int newidx = iptidx%10;

然后使用newidx。

答案 3 :(得分:-2)

可能在寻找...

Object[0][] = {Foo A, Foo B, Foo C}
Object[1][] = {notFoo A, notFoo B, notFoo C}