加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[C++]Vector的reserve函数小探究

发布时间:2020-12-15 04:57:54 所属栏目:百科 来源:网络整理
导读:前段时间,看了公司几个前辈的代码,发现他们特别喜欢用Vector,而且总喜欢定义之后直接reserve一定的空间。在我的印象中reserve只是保留一定的空间而已好像没有多大的用处,然后就查了一下,发现reserve好像会直接去分配内存空间(虽然不会改变size)。 于

前段时间,看了公司几个前辈的代码,发现他们特别喜欢用Vector,而且总喜欢定义之后直接reserve一定的空间。在我的印象中reserve只是保留一定的空间而已好像没有多大的用处,然后就查了一下,发现reserve好像会直接去分配内存空间(虽然不会改变size)。

于是写了一个小程序验证一下,结果发现,当数据量比较大的时候用reserve可以加快push的速度,于是又Get一个知识点。

下面给出测试代码和结果

#include

#include

#include

#include

#include

using namespace std;

int _tmain(int argc,_TCHAR* argv[])

{

int Loop = 10000000;

vector bStrVec;

vector dStrVec;

vector tStrVec;

tStrVec.reserve(Loop);

double bStart = (double)GetTickCount();

bStrVec.reserve(Loop);

double bEnd = (double)GetTickCount();

for (int i = 0; i < Loop;i++)

{

bStrVec.push_back(i);

}

double bEnd1 = (double)GetTickCount();

for (int j = 0; j < Loop;j++)

{

dStrVec.push_back(j);

}

double bEnd2 = (double)GetTickCount();

printf("t vec size is %dn",tStrVec.size());

printf("the vec size is %dn",bStrVec.size());

printf("reserve space: %lfn",bEnd - bStart);

printf("reserve push time: %lfn",bEnd1-bEnd);

printf("just push time: %lfn",bEnd2 - bEnd1);

system("pause");

return 0;

}

结果如下

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读