为什么这些基于范围的循环不能正常工作?

时间:2013-01-30 02:12:33

标签: c++ for-loop c++11

输出为2 3 4 5 2293456               6 10 1355995651 12980632 0

似乎我没有正确递增

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int x[5] = {1,2,3,4,5};

    vector<int> vec = {2, 4, 6, 8, 10};

    for(int i : x) {
        cout<<x[i]<<endl;
    }

    cout<<endl;

    for(int i : vec) {
        cout<<vec[i]<<endl;
    }
}

1 个答案:

答案 0 :(得分:7)

当您使用基于范围的for循环时,您将在容器中获取,而不是容器中的索引。所以i是数组/向量内部的值,而不是索引。

请记住:基于范围的for循环适用于没有索引的容器,例如std::liststd::map等。它们处理任意迭代器值范围。