Eclipse CDT的范围很广

时间:2013-08-18 19:55:49

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

我正在尝试为C ++ Primer中的练习写一个答案。这是我的代码:

int main()
{
vector<int> v1;
vector<int> v2(10);
vector<int> v3(10, 42);
vector<int> v4{10};
vector<int> v5{10, 42};
vector<string> v6{10};
vector<string> v7{10, "hi"};

for(auto i : v2)
    cout << v2[i] << " " <<;

return 0;
}

问题是我在for循环中遇到了泛型“语法错误”。我已经尝试了将{i}声明为int并声明&i的所有组合,但没有运气。这本书做了类似的for循环:

vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9};
for (auto &i : v)
    i *= i;
for (auto i : v)
    cout << i << " ";
cout << endl;

我在做什么与众不同?

1 个答案:

答案 0 :(得分:1)

你误解了循环是如何工作的。我不是指数。我包含向量的当前元素的副本。试试吧:

for(auto i : v2)
    cout << i << " " <<;

如果你想修改矢量的内容,你应该通过引用来获取元素:

for(auto& i : v2)
{
    ++i;
    cout << i << " " <<;
}   

编辑: 你用的是什么编译器?如果它是mingw你必须使用-std = c ++ 11

启用c ++ 11功能