-
Notifications
You must be signed in to change notification settings - Fork 0
/
STL源码剖析note.txt
59 lines (34 loc) · 1.96 KB
/
STL源码剖析note.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
STL源码剖析
1,STL提供六大组件
a,容器containers:各种数据结构。class template;
b,算法algorithms:各种算法。function template;
c,迭代器iterators:扮演容器与算法之间的胶合剂,泛型指针。共有5中类型。迭代器是一种将operator*,operator->,operator++,operator—等指针相关操作予重载的class template。所有STL容器都附带有自己专属的迭代器,只有容器设计者才知道如何遍历自己的元素,原生指针native pointer也是一种迭代器。
d,仿函数functors:行为类似函数,可作为算法的某种策略policy。仿函数是一种重载了operator()的class或class template,一般函数指针可视为狭义的仿函数。
e,适配器adapters:一种用来修饰容器containers或仿函数functors或迭代器iterators接口的东西。
f,空间配置器allocators:负责空间配置与管理。配置器是一个实现了动态空间配置,空间管理,空间释放的class template。
2,STL以头文件形式提供。
3,STL六大组件的交互关系,container通过allocator获得数据存储空间,algorithm通过iterator获取container内容,functor可以协助algorithm完成不同的策略变化,adapter可以修饰或套结functor。
4,SGISTL文件分布:
a,C++标准规范下的C头文件。
b,C++标准程序库中不属于STL范畴者。
c,STL标准头文件。
d,HP规范的STL头文件
e,SGI STL内部文件,STL真正实现于此。
algorithm:<stl_algorithm.h>
deque:<stl_deque.h>
functional <stl_function.h>
hash_map:<stl_hash_map.h>
hast_set:<stl_hash_set.h>
iterator:<stl_iterator.h>
list:<stl_list.h>
map:<stl_map.h>
memory:<stl_algobase.h><stl_alloc.h><stl_construct.h><stl_tempbuf.h><stl_uninitialized.h><stl_raw_storage_iter.h>
numeric:<stl_numeric.h>
pthread_alloc:node allocator
queue:<stl_queue.h>
rope:<stl_rope.h>
set:<stl_set.h>
slist:<stl_slist.h>
stack:<stl_stack.h>
utility:<stl_relops.h><stl_pair.h>
vector:<stl_vector.h>