vector内存管理

#include<iostream>
#include<forward_list>
#include<vector>
int main()
{
	using namespace std;
	vector<int>vec;
	cout << "vec:size" << vec.size()
		<< "capacity:" << vec.capacity() << endl;
	for (vector<int>::size_type i = 0; i != 24; ++i)
		vec.push_back(i);
	vec.reserve(100);
	cout << "vec:size" << vec.size()
		<< "capacity:" << vec.capacity() << endl;
	while (vec.size() != vec.capacity())//用完内存空间,不会重新分配
		vec.push_back(10);
	cout << "vec:size" << vec.size()
		<< "capacity:" << vec.capacity() << endl;
	vec.push_back(20);//此时超出预留空间,所以容器会出现分配内存空间
	cout << "vec:size" << vec.size()
		<< "capacity:" << vec.capacity() << endl;
	return 0;
}

capacity至少要与size一样大,具体分配多少额外空间视标准库而定。由上述例子,我们发现当vector为空时,并不需要额外空间;当添加了24个元素后发现,标准库分配了4个备用内存;继续向vector中添加元素,直到不超过预留空间;当继续添加元素,超过原有capacity时,vector将不得不重新分配内存空间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值