帮助搞清楚为什么这个输出是“01”

时间:2011-03-17 05:03:17

标签: c++

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”

3 个答案:

答案 0 :(得分:3)

如果对每个循环计算v.size(),那么当你从向量中弹出项目时,循环限制就会降低。它必须在退出循环之前弹出最后3关。

答案 1 :(得分: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

循环停在那里(当i == 3时不弹出),因为3 < 2为假。所以循环后v的最终内容是[0,1]。

答案 2 :(得分:0)

如上所述,第二次循环在第3次迭代时遇到停止条件,因为i val为3且向量大小为2。