是否有循环的最佳实践"一直到" C ++中的数组?

时间:2014-07-24 21:58:39

标签: python c++ c arrays for-loop

在Python中,可以将数组的每个元素与" next"进行比较。元素(包括具有第一个元素的最后一个元素),代码如下:

a = [0, 1, 2, 3]
for i in range(-1, 3):
    if a[i] + 1 >= a[i+1]:    
        print a[i], 'works'

输出:

3 works
0 works
1 works
2 works

如果我想比较数组的第一个元素和第二个元素,第二个元素与第三个元素等,,最后是第一个,我只需要一个循环在Python中。

我可以用C ++做到这一点吗?我可以以这种方式循环元素,同时完全保持一个循环吗?为了进一步说明我的意思,这里有一些C ++代码与上面的Python代码具有相同的功能。

int a[] = {0, 1, 2, 3};
std::cout a[3] << std::endl;
for(int i = 0; i < 2; i++)
    std::cout << a[i] << std::endl;

它具有相同的输出。我的观点是,对于某些算法,我必须手动复制for循环的内容以执行某些步骤。例如,如果我想查看第一个元素是否等于第二个元素,第二个元素是否等于第二个元素,等等,最后如果最后一个等于第一个元素,我必须在{{{之后或之前手动添加此步骤1}}循环。 --- for

这是我在C ++中应该做的吗?我很陌生,我不想扎根于糟糕的做法。

2 个答案:

答案 0 :(得分:8)

for (int i=3; i<(3 + size_of_array); ++i)
    std::cout << a[i % size_of_array] << '\n';

答案 1 :(得分:1)

使用std::begin()std::end()算法。

int a[3]={1,2,3};
for( auto x=end(a)-1; x>=begin(a); --x){
    cout<<*x<<endl;
}

以上代码输出3 2 1,即数组a的revrese顺序。看看[begin()][1]