C++ 帮助找出此输出为“0”的原因;01“; intmain() { 向量v(5); v[0]=0;v[1]=1;v[2]=2;v[3]=3;v[4]=4; 对于(int i=0;i

C++ 帮助找出此输出为“0”的原因;01“; intmain() { 向量v(5); v[0]=0;v[1]=1;v[2]=2;v[3]=3;v[4]=4; 对于(int i=0;i,c++,C++,如果对每个循环计算v.size(),则循环限制将随着从向量中弹出项目而降低。在退出循环之前,它必须弹出最后3个循环。如果v.size())在每个循环中求值,则循环限制将随着从向量中弹出项目而下降。在退出循环之前,它必须弹出最后3个。通过以下方式跟踪第一个for循环的每个迭代: 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.size(),则循环限制将随着从向量中弹出项目而降低。在退出循环之前,它必须弹出最后3个循环。

如果v.size())在每个循环中求值,则循环限制将随着从向量中弹出项目而下降。在退出循环之前,它必须弹出最后3个。通过以下方式跟踪第一个for循环的每个迭代:

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;
}

由于
3<2
为false,循环停止在那里(当i==3时不会弹出)。因此循环后
v
的最终内容为[0,1]。

通过以下方式跟踪第一个for循环的每个迭代:

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;
}

由于
3<2
为false,循环停止在那里(当i==3时不会弹出)。因此循环后
v
的最终内容为[0,1].

如前所述,第二个循环在第三次迭代时满足停止条件,因为i val为3,向量大小为2。

如前所述,第二个循环在第三次迭代时满足停止条件,因为i val为3,向量大小为2。

哎哟哎哟……请不要使用生产代码哎哟……请不要使用生产代码这是真实的只是一个评论,而不是问题的答案。请使用“添加评论”为作者留下反馈。天哪,你在一年零五个月后提到了我。可笑的是,这似乎是你的问题再次出现。因此,你的评论再次出现:)评论是由新的审查系统生成的,您的答案是由该系统获取的,因此必须有某种形式的一致性。这实际上是一个评论,而不是问题的答案。请使用“添加评论”给作者留下反馈。天哪,你在一年零五个月后提到了我。可笑的是,你的问题似乎再次出现。因此,你的评论再次出现:)评论是由新的审查系统生成的,你的答案是由该系统获取的,因此必须有某种形式的一致性。