基于范围的数组循环

时间:2018-01-06 20:53:59

标签: c++

我试图做类似的事情:

int iArray[16];
int iOtherArray[16];
for ( auto &i: iArray )
{
    iOtherArray[i] = iArray[i];
}

for for循环遍历数组所具有的组件数,而不是每个单独的组件。我是否正确理解基于范围的for循环的用法?

2 个答案:

答案 0 :(得分:1)

不,基于范围的循环将为您提供元素值,而不是索引。

对于像这样的复制操作,基于范围的循环是一个糟糕的选择,因为你必须跟踪两个范围并希望每个范围的相应元素。只需使用正常的for循环。

for(int i = 0; 16 > ndx; ++ndx)
  otherArray[i] = array[i];

答案 1 :(得分:1)

您可以使用标准库中的复制算法:

std::copy(array, array+16, otherArray);