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”
答案 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。