Bootstrap

实现自己的STL配置器allocator

实现自己的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
;