序章
tinySTL的主要内容分别的stl的头文件,和与之对应的测试文件test。之前学习了侯捷老师的STL课和内存管理,因此找来此项目,借此完善对stl的理解,顺便复习数据结构和算法。以下是此项目关键的结构
STL的六大组件
文件中的头文件分散,初入时不知从何下手,我们先对六组件有个简单的认知,之后再下手
- 容器 Containers 封装大量常用的数据结构
- 分配器 Allocater 管理内存
- 算法 Algorithems 封装一些常用算法
- 迭代器 Iterators 算法与容器之间的桥梁
- 适配器 Adapters 修改接口
- 仿函数 Functors 具有函数性质的对象,定义一些常用简单的函数
通过翻阅这些头文件,我们会发现,一些头文件中会调用其他的头文件,所以,一定会有一个开始的头文件没有调用任何文件,或是调用的少。于是,起点就找到了:
虽然type_traits.h没有调用任何头文件,但因为它的作用一开始过于抽象,我们先不理会,先从分配器入手:
分配器 包含 construct.h 和allocator.h(还有一个alloc.h这个属于内存管理--内存池的范畴,我们先不追究内存管理,先理清stl,感兴趣的可以提前试一试)
因为迭代器充当了算法,容器间的桥梁,算法要向迭代器提问,来获取容器的信息,所以分配好内存后,我们先完善迭代器
迭代器包含:iterator.h
仿函数提供一些基础方法,供算法使用,所以迭代器完后,我们追踪仿函数;
适配器主要是修改接口,所以有仿函数、容器、迭代器的适配器(三种),我们中途都能进行添加。
因此,大体方向是:
分配器 、 迭代器 、 仿函数、适配器 、 算法 、 容器。
至于测试程序,依照原项目说明进行。