怎样使用vector的Capacity接口?(详细 ! ! ! !)

在这里插入图片描述

Capacity(内存容量)

在这里插入图片描述

1.size

用来看内部有多少个字节

struct A{

		A(int a = 1, int b = 2)
		:_a(a)
		, _b(b)
		{}
		int _a = 1;
		int _b = 2;
	};

	vector<char>v1;		//变量的创建
	vector<int>v2;
	vector<int*>v3;
	vector<double>v4;
	vector<A>v5(1);		//这里对于自定义类型赋予了1个空间,所以在size()的时候将会是1

	cout << v1.size() << endl;	//输出其内部现在有的字节数
	cout << v2.size() << endl;
	cout << v3.size() << endl;
	cout << v4.size() << endl;
	cout << v5.size() << endl;

显示结果:
在这里插入图片描述

2.max_size

查看其内部目前最大可以存储的字节数目

struct A{

		A(int a = 1, int b = 2)
		:_a(a)
		, _b(b)
		{}
		int _a = 1;
		int _b = 2;
	};

	vector<char>v1;
	vector<int>v2;
	vector<int*>v3;
	vector<double>v4;
	vector<A>v5(1);		//这里查看的是最大,和这里的空间赋予就没有关系了

	//显示出最大存储量
	cout << v1.max_size() << endl;
	cout << v2.max_size() << endl;
	cout << v3.max_size() << endl;
	cout << v4.max_size() << endl;
	cout << v5.max_size() << endl;

最大可以含有的字节数:
在这里插入图片描述

3.resize

	struct A{

		A(int a = 1, int b = 2)
		:_a(a)
		, _b(b)
		{}
		int _a = 1;
		int _b = 2;
	};

	vector<char>v1;
	vector<int>v2;
	vector<int*>v3;
	vector<double>v4;
	vector<A>v5(10);

	v1.resize(10);		//修改内部对应的字节数
	v2.resize(2);		
	v3.resize(4);
	v4.resize(6);
	v5.resize(3);

	cout << v1.size() << endl;
	cout << v2.size() << endl;
	cout << v3.size() << endl;
	cout << v4.size() << endl;
	cout << v5.size() << endl;

运行结果:
在这里插入图片描述

4.capacity

查看现在内部的最大容量

cout << v5.capacity() << endl;		//查看v5中现在的最大容量

比较简单,不过多的实现,大家自己去敲.

5.reserve

改变其数据内部的最大容量 容量只能改大,不能改小!!

	v5.reserve(15);		//先将v5的容量改成15
	v1.reserve(5);		
	v2.reserve(10);
	v5.reserve(5);		//完了又改成5,发现,结果还是15

	cout << v1.capacity() << endl;
	cout << v2.capacity() << endl;
	cout << v3.capacity() << endl;
	cout << v4.capacity() << endl;
	cout << v5.capacity() << endl;

最大容量显示结果:
在这里插入图片描述

6.shrink_to_fit

struct A{

		A(int a = 1, int b = 2)
		:_a(a)
		, _b(b)
		{}
		int _a = 1;
		int _b = 2;
	};

	vector<A>v5(5);		//现在vector内部含有5个对应的有效元素

	cout << v5.capacity() << endl;		//打印容量

	v5.reserve(15);			//将最大容量变为15

	cout << v5.capacity() << endl;		//打印

    //如果在对应的空间内部有多余的空闲部分,则调用这个接口则会直接删掉
	v5.shrink_to_fit();		//删除除有效元素之外的多余的空间!!!

	cout << v5.capacity() << endl;		//再次打印

显示结果:
在这里插入图片描述
这篇博客就是对于容量相关接口的一个实现与介绍,方便我们以后更好的利用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值