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; //再次打印
显示结果:
这篇博客就是对于容量相关接口的一个实现与介绍,方便我们以后更好的利用.