STL源码剖析知识

来源:互联网 发布:python jdbc 编辑:程序博客网 时间:2024/06/07 08:50

这里将SGI版本的STL

chapter one

1 STL主要包含六大组件:容器、算法、迭代器、仿函数、适配器(adapters)、配置器(allocators)。其中适配器是各种接口,配置器是负责空间配置与管理的。

2 STL代码里面真的体现了C++的美丽,各种功能都用上了!

3 迭代器是前闭后开区间

4 用括号直接产生临时对象,

5 仿函数就是重载括号运算符   为什么使用仿函数,还有一点,可以保存数据

6 空间适配器不只能分配内存,还能直接向硬盘读取

7 for_each :对容器里面的每个元素都调用一个函数

8 static成员在class内部直接初始化,因为它是类的成员,而不是对象的,不能在构造函数初始化——会造成多次初始化

9 size_t是通过sizeof返回的,可能是任何无符号整型,比如uint,ulong,ulonglong等,是由开发环境决定的,因此可移植性高。

  ptrdiff_t是计算指针的距离,通过地址差除以类型大小得到与类型无关的距离。这两个都是在<cstddef>头文件中的

10 作用域解析符::放在前面,表示使用全局对象。

    operator new 和new operator:都是用来分配内存的,operator new其实是函数,可重载,使用时要保持operator关键字。new operator就是常使用的new关键字。

11 P64 alloc是内部的内存分配类?在声明容器时需要开辟内存空间,不过通常采用默认的,不用写出来。

12 使用<new.h>中的placement new(operator new的重载版本),在已经分配的内存中创建新的对象。





可以查询的相关知识:SGI STL相关资料


0 0