一些关于STL空间配置器的理解

一点废话 最近终于看完了《STL源码剖析》的前三章,个人觉得前三章是这本书最重要的部分,考虑到时间问题(简历还没投啊,拖太晚了),其他的具体实现先放放也罢。 关于STL中的空间配置器(allocator),在STL的运用角度上看,空间配置器是最不需要知道的东西。而在STL的实现上,空间配置器是最必须也是最先需要知道的东西。 乱七八糟的东西 首先我们必须知道的是,在C++中通过new一个新的对象,它的实际步骤可以分为两个部分:配置内存(allocat),调用构造函数(construct)。而当我们通过delete一个对象的时候,它的实际步骤也可以分为两个部分:调用析构函数(destroy),释放内存(deallocat)。 关于构造和析构,并不是我这里讲的重点,只要会点基础的cpp就好了。 而关于对象构造前的空间配置和对象析构后的空间释放,SGI STL对此的设计哲学如下: * 向system heap 申请空间 * 考虑多线程状态 * 考虑内存不足的应变措施 * 考虑过多的小型区块可能造成的内存碎片问题 核心部分 一些乱七八糟的东西讲完了(…

iterator 的小东西

被C++的迭代器给坑了2个小时 不得不立文警告自己 C++的iterator 对于不同的STL来说 有不同的操作 小小的总结一下 (1)所有迭代器 p++ 后置自增迭代器 ++p 前置自增迭代器 (2)输入迭代器 *p 复引用迭代器,作为右值 p=p1 将一个迭代器赋给另一个迭代器 p==p1 比较迭代器的相等性 p!=p1 比较迭代器的不等性 (3)输出迭代器 *p 复引用迭代器,作为左值 p=p1 将一个迭代器赋给另一个迭代器 (4)正向迭代器 提供输入输出迭代器的所有功能 (5)双向迭代器 –p 前置自减迭代器 p– 后置自减迭代器 (6)随机迭代器 p+=i 将迭代器递增i位…