#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*
reserve(int len)容器预留len个元素长度,预留位置不初始化,元素不可访问
*/
void test1()
{
vector<int> v1;
int num = 0;
int *p = NULL;
for (int i = 0; i<100000; i++)
{
v1.push_back(i);
if (p != &v1[0])//有多少次重写分配空间,每一次都会copy元素到新的空间
{
p = &v1[0];
num++;
}
}
cout<<"num:"<<num<<endl; //18
}
void test2()
{
//若预先知道有多少元素长度,可以使用reserve()函数,一次性指定元素长度
vector<int> v1;
v1.reserve(100000);
int num = 0;
int *p = NULL;
for (int i = 0; i<100000; i++)
{
v1.push_back(i);
if (p != &v1[0])//有多少次重写分配空间,每一次都会copy元素到新的空间
{
p = &v1[0];
num++;
}
}
cout<<"num:"<<num<<endl; //1次
}
int main()
{
test1();
test2();
return 0;
}
C++ STL reserve函数预留空间
最新推荐文章于 2025-03-23 08:00:00 发布