2011-03-17 43 views
0
int main() 
{ 
vector<int> v(5); 
v[0]=0; v[1]=1; v[2]=2; v[3]=3; v[4]=4; 

for (int i=0; i<v.size(); i++) 
    v.pop_back(); 
for (int i=0; i<v.size(); i++) 
    cout<<v[i]; 
cout<<"\n"; 

return 0; 
} 

我很困惑,爲什麼輸出是「01」。我會認爲輸出爲「0」幫助搞清楚爲什麼這個輸出是「01」

+1

哎喲哎喲.....請讓它不能生產代碼 – Anycorn 2011-03-17 05:06:30

回答

3

跟蹤通過第一for循環的每次迭代:

i v.size() v (before pop_back) 
0 5   0,1,2,3,4 
1 4   0,1,2,3 
2 3   0,1,2 
3 2   0, 1 

和環路停止在那裏(未彈出當我== 3)因爲3 < 2是假的。所以循環後的v的最後內容是[0,1]。

3

如果v.size()在每個循環中計算一次,那麼當您將項目從您的向量中彈出時,循環限制將降低。它必須在退出循環之前彈出最後3個關閉。

+0

也,聞起來像家庭作業。 – geofftnz 2011-03-17 05:06:12

0

如所提到的,第二循環符合在第三迭代中的停止條件,因爲我val爲3和矢量大小是2

+0

這實在是一個評論,而不是問題的答案。請使用「添加評論」爲作者留下反饋。 – ThePower 2012-08-15 15:31:02

+0

在1年零5個月後,你提到了我。 Ridiculos – 2012-08-17 06:20:16

+0

似乎是一個重新發生的問題,你有。 – ThePower 2012-08-17 07:57:10

相關問題