读书人

vector的reserve函数,该怎么处理

发布时间: 2012-03-14 12:01:12 作者: rapoo

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,并以默认构造函数构造元素填入容器。

读书人网 >C++

热点推荐