实现自己的STL配置器
STL所有数据都存储在容器之中,而容器需要配置空间以置放资料,所以配置器就是完成这一个任务的。
以下是它的一些接口
allocator::value_type
//类型,如int
allocator::pointer
//指针,如int *
allocator::const_pointer
allocator::reference
//引用, 如int &
allocator::const_reference
allocator::size_type
//大小,如size_t
allocator::difference_type
//difference_type是一种常用的迭代器型别,用来表示两个迭代器之间的距离,因此它也可以用来表示一个容器的最大容量,因为对于连续空间的容器而言,头尾之间的距离就是其最大容量。
allocator::rebind
//rebind实现了对不同类型使用同一种内存分配策略的要求
allocator::allocator()
//默认的构造函数
allocator::allocator(const allocator&)
//复制构造函数
template <class U>allocator::allocator(const allocator<U>&)
//泛化复制构造函数
allocator::~allocator()
//析构函数
pointer allocator::address(reference x) const
//返回某个对象的地址,a.address(x) 相当于 &x
const_pointer allocator::address(const_reference x) const
//返回某个对象的地址,a.address(x) 相当于 &x
pointer allocator::allocate(size_type n, const void* = 0)
//分配可以存储n个T对象的空间。第二个参数是个提示,实现上可能会用它来增进区域性(locality),或完全忽略之
void allocator::deallocator(pointer p, size_type n)
//清除空间
size_type allocator::max_size() const
//返回可以配置的最大值
void allocator::construct(pointer p, const T