2013-08-18 27 views
0

我想在C++入門中寫一個練習的答案。這裏是我的代碼:Eclipse CDT的範圍爲

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循環中得到一個通用的「語法錯誤」。我嘗試過所有組合,聲明我爲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

你誤解了循環的工作原理。我不是索引。我包含了矢量的當前元素的副本。只是嘗試:

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

,如果你想修改向量的內容,您應該參考採取元素:

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

編輯: 你使用的是什麼編譯器?如果它是明確的,你將不得不使用-std = C++來啓用C++ 11功能11