我正在尝试创建一个对数组的循环引用。例如,
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<=16
和i>10
,那么索引应转到arr1[0]
并从那里开始。什么是优选或推荐的方法来做到这一点?
答案 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}