【发布时间】:2013-09-11 08:12:20
【问题描述】:
在下面的代码中,如果我调用v.resize(n),程序会打印出0 0 0 0 0 0 0 0 0 0,这不是我想看到的。但是,如果我将包含 v.resize(n) 的行注释掉,它将打印出 0 1 2 3 4 5 6 7 8 9,这正是我想看到的。为什么会这样?我这里的逻辑有什么问题?
#include <iostream>
#include <vector>
using namespace std;
int main( int argc , char ** argv )
{
int n = 10;
vector<int> v;
v.resize(n);
for( int i=0 ; i<n ; i++ )
{
v.push_back(i);
}
for( int i=0 ; i<n ; i++ )
{
cout << v[i] << " ";
}
cout << endl;
return 0;
}
【问题讨论】:
-
当您对容器的内容感到困惑时,不要假设您知道它的大小。不要从
0循环到n来显示内容,而是使用迭代器并从begin()循环到end()。 -
也许您打算改用
.reserve?
标签: c++ vector stl containers