容器vector和空间配置器
实现一个C++ STL里面的简单向量容器类vector
vector 向量容器 2倍扩容的数组 VS-vector 1.5倍 gcc-vector 2倍
vector简单实现
1 | template<typename T> |
在定义一个对象之后
1 | Vector<A> vec(2000000); |
这时候会发现代码构造是开辟了2000000个内存空间,但是你不知道你到底使用多少
这时候我们会发现,在容器代码的编写上,是不是应该做到
1、把对象的内存开辟、对象构造分开 new
2、把对象的析构、内存释放分开 delete
因此,就需要一个空间配置器
1 | template<typename T> |
此时只需要将类里面的析构和构造函数开辟空间和释放内存的代码改动一下
代码总体如下
1 |
|
运行结果如下
1 | A() |
从这里可以看出176行定义vec(20000)这句话并没有直接把所有的空间开辟出来,而是等使用时才开辟空间
如有错误,请多包涵