vector容器10之预留空间

2021-03-02 17:00:14 浏览数 (1)

预留空间

功能描述:可以减少动态扩展容量时的扩展的次数 函数原型:

未预留空间前,查看动态扩展次数:

代码语言:javascript复制
#include<iostream>
using namespace std;
#include<vector>
//vector之预留空间
void realApply()
{

	//查看动态扩展容量的次数
	//原理:每次扩展都会开辟空间更大的内容,地址会改变,里面每个元素地址也会改变
	int num = 0;
	int* p = NULL;
	vector<int> v2;
	for (int i = 0; i < 10000; i  )
	{
		v2.push_back(i);
		if (p != &v2[0])
		{
			p = &v2[0];
			num  ;
		}
	}
	cout << "动态扩展的次数:    " <<num<< endl;


}

int main()
{
	realApply();
	system("pause");
	return 0;
}

预留空间后,查看动态扩展次数:

代码语言:javascript复制
#include<iostream>
using namespace std;
#include<vector>
//vector之预留空间
void realApply()
{

	//查看动态扩展容量的次数
	//原理:每次扩展都会开辟空间更大的内容,地址会改变,里面每个元素地址也会改变
	int num = 0;
	int* p = NULL;
	vector<int> v2;
	//提前预留空间后
	v2.reserve(10000);
	for (int i = 0; i < 10000; i  )
	{
		v2.push_back(i);
		if (p != &v2[0])
		{
			p = &v2[0];
			num  ;
		}
	}
	cout << "动态扩展的次数:    " <<num<< endl;


}

int main()
{
	realApply();
	system("pause");
	return 0;
}

如果数据量较大,可以提前用reserve预留空间,减少扩展次数,提高程序运作速度

0 人点赞