首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector的reserve函数,该怎么处理

2012-03-14 
vector的reserve函数#include iostream#include vectorusingnamespacestdintmain(){vector intMyve

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

热点排行