vector的reserve函数
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
vector < int > Myvector;
Myvector.reserve( 4 );
for( unsigned int i = 0; i < 4; i++ )
{
Myvector[i] = i;
cout < < Myvector[i] < < endl;
}
return 0;
}
在Visual Studio 2005中,运行程序显示:【5580】中发生未处理的win32异常。
1.将Myvector.reserve( 4 );改为Myvector.resize( 4 ),程序运行正常;
2.将Myvector[i] = i;改为Myvector.push_back( i ),程序运行正常;
我的猜想是:reserve( )函数是为vector保留适当的容量,但编译器并未真正给它分配空间,所以执行语句Myvector[i] = i;时出错。请高手指教!!!
[解决办法]
reserve只是预定空间,vector的size并没有改变
[解决办法]
resize是改变vector的size,并以默认构造函数构造元素填入容器。