文档介绍:踏雪无痕
SGI STL 源码剖析- 空间配置器
分类: C++ 2012-07-20 13:36 273人阅读评论(0) 收藏举报
.              文件名
bits/
.              背景知识
候捷在《STL源代码剖析》中说:“源码之前,了无秘密”,自然是大师的潇洒之语。但是,如果你不熟悉C++
template的基本语法,不明白Generic Programming的基本概念,那么即便STL的源码当前,对你来讲仍会有很多秘
密。所以,先简要介绍一些必要的背景知识,扫清前进的障碍。
.         两种风格的allocator
SGI STL中有两种风格的allocator,分别是STL standard style和SGI style,其区别说明如下:
1.                STL standard allocator是STL标准定义的,必须实现以下接口和associated type(以下T表示
该allocator负责管理的对象类型):
Ø         Associated type:
value_type                             负责管理的对象类型(T)
pointer                                          指向T的指针
const_pointer                         指向const T的指针
referance                               T的引用
const_referance                            T的const引用
size_type                               分配的对象个数的类型,注意类型中还隐含着它可以表示的最大值,
所以一般情况下size_type就是size_t,但某些情况下size_t可能无法胜任,比如某个allocator可以分配的对象个
数非常多(从硬盘中分配空间),多至超过了size_t的最大值,此时size_type就不能是size_t,而应该是一个最大
值更大的type。
defferance_type                            指针相减结果的类型,一般情况下就是ptrdiff_t,但也有可能不
是ptrdiff_t,道理同size_type。
rebind                                    rebind是一个内置class,它定义了一个associated type
other,other也是一个allocator的实例,但是负责管理的对象类型T不同。
Ø         接口:
default constructor
copy constructor
generic copy constructor
destructor