2012-08-13 55 views
1

爲什麼對我來說這做工精細:for循環,迭代器和載體不跟我合作

for(int i = 0; i < vec.size(); i++) 
    { 
     os << vec[i] << " "; 
    } 

雖然這並不:

for(vector<int>::iterator it = vec.begin(); it < vec.end(); it++) 
    { 
     os << vec[*it] << " "; 
    } 
+0

考慮用於打印的'const_iterator'。而且,當像這樣使用時,C++ 11的ranged-for是更好的解決方案。 – chris 2012-08-13 17:38:04

+1

它究竟如何「不工作」?沒有足夠的時間通過循環,或者由於vec [* it]調用而崩潰? – MartyE 2012-08-13 17:41:48

回答

10

你應該打印*it,而不是使用它作爲索引,你應該改變條件爲it != vec.end()

+2

條件沒有問題,但 – 2012-08-13 17:38:40

+0

@Anubis先生我只是一個初學者,我從來沒有在嚴肅的代碼中看到過它 cnicutar 2012-08-13 17:39:32

+0

結束條件很好 – pb2q 2012-08-13 17:40:03

5

您使用迭代錯了,應該是:

for(vector<int>::iterator it = vec.begin(); it < vec.end(); it++) 
{ 
    os << *it << " "; 
} 

你的代碼只是試圖在指數*it,這甚至可能不是有效的打印件。