[C++]Vector的reserve函数小探究
前段时间,看了公司几个前辈的代码,发现他们特别喜欢用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 vector vector 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; } 结果如下 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |