c++ - 帮助弄清楚为什么这个输出是 "01"

标签 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”

最佳答案

通过以下方式跟踪第一个 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 < 2起,循环就停在那里(当i == 3 时不弹出)是假的。所以v的最终内容循环之后是 [ 0, 1 ]。

关于c++ - 帮助弄清楚为什么这个输出是 "01",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5335060/

相关文章:

c++ - 如何在主函数中访问订阅者类的公共(public)变量?

c++ - const_string 作为映射键;制作缓冲拷贝?

c++ - 为什么带有括号 () 的数组初始化被编译器标记为错误?

c++ - 编译器如何检测内存损坏

c++ - 针对 Win10 SDK 构建时 TYPE_ALIGNMENT(LARGE_INTEGER) 不正确

c++ - 在 Visual Studio C++ 中创建应用程序图标的最佳方式

c++ - 为什么在 C++ 中虚拟函数表指针 (vfptr) 不能是静态的?

C++ lib 导入工作,除了两个构造函数

c++ - 翻转 glReadPixels 的 RGBA 输出(C++ OpenGL)

c++ - Qt QNetworkReply 不正确的字符集