|
1 | 1 | # STLSourceCodeNote |
2 | 2 | SGI STL source code analysis and note from 《STL源码剖析》 by 侯捷 |
3 | 3 | (包含电子书、源码注释及测试代码) |
| 4 | + |
| 5 | + 1.1 STL概论 |
| 6 | + 1.1.1 STL的历史 |
| 7 | + 1.1.2 STL与C++标准程序库 |
| 8 | + 1.2 STL六大组件 功能与运用 |
| 9 | + 1.3 GNU源代码开放精神 |
| 10 | + 1.4 HP实现版本 |
| 11 | + 1.5 P.J.Plauger实现版本 |
| 12 | + 1.6 Rouge Wave实现版本 |
| 13 | + 1.7 STLport实现版本 |
| 14 | + 1.8 SGI STL实现版本 |
| 15 | + 1.8.1 GNU C++headers文件分布(按字母排序) |
| 16 | + 1.8.2 SGI STL文件分布与简介 |
| 17 | + 1.8.3 SGI STL的编译器组态设置(configuration) |
| 18 | + 1.9 可能令你困惑的C++ 语法 |
| 19 | + 1.9.1 stl_config.h中的各种组态 |
| 20 | + 1.9.2 临时对象的产生与运用 |
| 21 | + 1.9.3 静态常量整数成员在class内部直接初始化 |
| 22 | + 1.9.4 increment/decrement/dereference 操作符 |
| 23 | + 1.9.5 前闭后开区间表示法[ ) |
| 24 | + 1.9.6 function call操作符(operator()) |
| 25 | + 2.1 空间配置器的标准接口 |
| 26 | + 2.1.1 设计一个简单的空间配置器,JJ::allocator |
| 27 | + 2.2 具备次配置力(sub-allocation)的SGI空间配置器 |
| 28 | + 2.2.1 SGI标准的空间配置器,std::allocator |
| 29 | + 2.2.2 SGI特殊的空间配置器,std::alloc |
| 30 | + 2.2.3 构造和析构基本工具:construct()和destroy() |
| 31 | + 2.2.4 空间的配置与释放,std::alloc |
| 32 | + 2.2.5 第一级配置器_malloc_alloc_template剖析 |
| 33 | + 2.2.6 第二级配置器_default_alloc_template剖析 |
| 34 | + 2.2.7 空间配置函数allocate() |
| 35 | + 2.2.8 空间释放函数deallocate() |
| 36 | + 2.2.9 重新充填free lists |
| 37 | + 2.2.10 内存池(memory pool) |
| 38 | + 2.3 内存基本处理工具 |
| 39 | + 2.3.1 uninitialized_copy |
| 40 | + 2.3.2 uninitialized_fill |
| 41 | + 2.3.3 uninitialized_fill_n |
| 42 | + 3.1 迭代器设计思维——STL关键所在 |
| 43 | + 3.2 迭代器(iterator)是一种smart pointer |
| 44 | + 3.3 迭代器相应型别(associated types) |
| 45 | + 3.4 Traits编程技法——STL源代码门钥 |
| 46 | + 3.4.1 迭代器相应型别之一:value_type |
| 47 | + 3.4.2 迭代器相应型别之二:difference_type |
| 48 | + 3.4.3 迭代器相应型别之三:reference_type |
| 49 | + 3.4.4 迭代器相应型别之四:pointer_type |
| 50 | + 3.4.5 迭代器相应型别之五:iterator_category |
| 51 | + 3.5 std::iterator的保证 |
| 52 | + 3.6 iterator源代码完整重列 |
| 53 | + 3.7 SGI STL的私房菜:_type_traits |
| 54 | + 4.1 容器的概观与分类 |
| 55 | + 4.1.1 序列式容器(sequential containers) |
| 56 | + 4.2 vector |
| 57 | + 4.2.1 vector概述 |
| 58 | + 4.2.2 vector定义摘要 |
| 59 | + 4.2.3 vector的迭代器 |
| 60 | + 4.2.4 vector的数据结构 |
| 61 | + 4.2.5 vector的构造与内存管理:constructor,push_back |
| 62 | + 4.2.6 vector的元素操作:pop_back,erase,clear,insert |
| 63 | + 4.3 list |
| 64 | + 4.3.1 list概述 |
| 65 | + 4.3.2 list的节点(node) |
| 66 | + 4.3.3 list的迭代器 |
| 67 | + 4.3.4 list的数据结构 |
| 68 | + 4.3.5 list的构造与内存管理:constructor,push_back,insert |
| 69 | + 4.3.6 list的元素操作:push_front,push_back,erase,pop_front,pop_back,clear,remove,unique,splice,merge,reverse,sort |
| 70 | + 4.4 deque |
| 71 | + 4.4.1 deque概述 |
| 72 | + 4.4.2 deque的中控器 |
| 73 | + 4.4.3 deque的迭代器 |
| 74 | + 4.4.4 deque的数据结构 |
| 75 | + 4.4.5 deque的构造与内存管理ctor,push_back,push_front |
| 76 | + 4.4.6 deque的元素操作pop_back,pop_front,clear,erase,insert |
| 77 | + 4.5 stack |
| 78 | + 4.5.1 stack概述 |
| 79 | + 4.5.2 stack定义完整列表 |
| 80 | + 4.5.3 stack没有迭代器 |
| 81 | + 4.5.4 以list作为stack的底层容器 |
| 82 | + 4.6 queue |
| 83 | + 4.6.1 queue概述 |
| 84 | + 4.6.2 queue定义完整列表 |
| 85 | + 4.6.3 queue没有迭代器 |
| 86 | + 4.6.4 以list作为queue的底层容器 |
| 87 | + 4.7 heap(隐式表述,implicit representation) |
| 88 | + 4.7.1 heap概述 |
| 89 | + 4.7.2 heap算法 |
| 90 | + push_heap算法 |
| 91 | + pop_heap算法 |
| 92 | + sort_heap算法 |
| 93 | + make heap算法 |
| 94 | + 4.7.3 heap没有迭代器 |
| 95 | + 4.7.4 heap测试实例 |
| 96 | + 4.8 priority_queue |
| 97 | + 4.8.1 priority_queue概述 |
| 98 | + 4.8.2 priority_queue定义完整列表 |
| 99 | + 4.8.3 priority_queue没有迭代器 |
| 100 | + 4.8.4 priority_queue测试实例 |
| 101 | + 4.9 slist |
| 102 | + 4.9.1 slist概述 |
| 103 | + 4.9.2 slist的节点 |
| 104 | + 4.9.3 slist的迭代器 |
| 105 | + 4.9.4 slist的数据结构 |
| 106 | + 4.9.5 slist的元素操作 |
| 107 | + 5.1 树的导览 |
| 108 | + 5.1.1 二叉搜索树 |
| 109 | + 5.1.2 平衡二叉搜索树 |
| 110 | + 5.1.3 AVL tree |
| 111 | + 5.1.4 单旋转 |
| 112 | + 5.1.5 双旋转 |
| 113 | + 5.2 RB-tree(红黑树) |
| 114 | + 5.2.1 插入节点 |
| 115 | + 5.2.2 一个由上而下的程序 |
| 116 | + 5.2.3 RB-tree的节点设计 |
| 117 | + 5.2.4 RB-tree的迭代器 |
| 118 | + 5.2.5 RB-tree的数据结构 |
| 119 | + 5.2.6 RB-tree的构造与内存管理 |
| 120 | + 5.2.7 RB-tree的元素操作 |
| 121 | + 5.3 set |
| 122 | + 5.4 map |
| 123 | + 5.5 multiset |
| 124 | + 5.6 multimap |
| 125 | + 5.7 hashtable |
| 126 | + 5.7.1 hashtable概述 |
| 127 | + 线性探测(linear probing) |
| 128 | + 二次探测(quadratic probing) |
| 129 | + 开链(separate chaining) |
| 130 | + 5.7.2 hashtable的桶子(buckets)与节点(nodes) |
| 131 | + 5.7.3 hashtable的迭代器 |
| 132 | + 5.7.4 hashtable的数据结构 |
| 133 | + 5.7.5 hashtable的构造与内存管理 |
| 134 | + 插入操作(insert)与表格重整(resize) |
| 135 | + 判知元素的落脚处(bkt_num) |
| 136 | + 复制(copy_from)和整体删除(clear) |
| 137 | + 5.7.6 hashtable运用实例 |
| 138 | + 5.7.7 hash functions |
| 139 | + 5.8 hash_set |
| 140 | + 5.9 hash_map |
| 141 | + 5.10 hash_multiset |
| 142 | + 5.11 hash_multimap |
| 143 | + 6.1 算法概观 |
| 144 | + 6.1.1 算法分析与复杂度表示O() |
| 145 | + |
| 146 | + 6.1.2 STL算法总览 |
| 147 | + 6.1.3 质变算法mutating algorithms——会改变操作对象之值 |
| 148 | + 6.1.4 非质变算法nonmutating algorithms——不改变操作对象之值 |
| 149 | + 6.1.5 STL算法的一般形式 |
| 150 | + 6.2 算法的泛化过程 |
| 151 | + 6.3 数值算法<stl_numeric.h> |
| 152 | + 6.3.1 运用实例 |
| 153 | + 6.3.2 accumulate |
| 154 | + 6.3.3 adjacent_difference |
| 155 | + 6.3.4 inner_product |
| 156 | + 6.3.5 partial_sum |
| 157 | + 6.3.6 power |
| 158 | + 6.3.7 itoa |
| 159 | + 6.4 基本算法<stl_algobase.h> |
| 160 | + 6.4.1 运用实例 |
| 161 | + 6.4.2 equal, fill, fill_n, iter_swap, lexicographical_compare,max,min,mismatch,swap |
| 162 | + 6.4.3 copy——强化效率无所不用其极 |
| 163 | + 6.4.4 copy_backward |
| 164 | + 6.5 Set相关算法 |
| 165 | + 6.5.1 set_union |
| 166 | + 6.5.2 set_intersection |
| 167 | + 6.5.3 set_difference |
| 168 | + 6.5.4 set_symmetric_difference |
| 169 | + 6.6 heap算法 |
| 170 | + 6.7 其它算法 |
| 171 | + 6.7.1 单纯的数据处理 |
| 172 | + 6.7.2 lower_bound(应用于有序区间) |
| 173 | + 6.7.3 upper_bound(应用于有序区间) |
| 174 | + 6.7.4 binary_search(应用于有序区间) |
| 175 | + 6.7.5 next_permutation |
| 176 | + 6.7.6 prev_permutation |
| 177 | + 6.7.7 random_shuffle |
| 178 | + 6.7.8 partial_sort/partial_sort_copy |
| 179 | + 6.7.9 sort |
| 180 | + 6.7.10 equal_range(应用于有序区间) |
| 181 | + 6.7.11 inplace_merge(应用于有序区间) |
| 182 | + 6.7.12 nth_element |
| 183 | + 6.7.13 merge sort |
| 184 | + 7.1 仿函数(functor)概观446 |
| 185 | + 7.2 可配接(adaptable)的关键448 |
| 186 | + 7.2.1 unary_function |
| 187 | + 7.2.2 binary_function |
| 188 | + 7.3 算术类(Arithmetic)仿函数451 |
| 189 | + 7.4 关系运算类(Relational)仿函数453 |
| 190 | + 7.5 逻辑运算类(Logical)仿函数455 |
| 191 | + 7.6 证同(identity)、选择(select)、投射(project)456 |
| 192 | + 8.1 配接器之概观与分类 |
| 193 | + 8.1.1 应用于容器,container adapters |
| 194 | + 8.1.2 应用于迭代器,iterator adapters |
| 195 | + 8.1.3 应用于仿函数,functor adapters |
| 196 | + 8.2 container adapters |
| 197 | + 8.2.1 stack |
| 198 | + 8.2.2 queue |
| 199 | + 8.3 iterator adapters |
| 200 | + 8.3.1 insert iterators |
| 201 | + 8.3.2 reverse iterators |
| 202 | + 8.3.3 stream iterators |
| 203 | + 8.4 function adapters |
| 204 | + 8.4.1 对返回值进行逻辑否定:not1,not2 |
| 205 | + 8.4.2 对参数进行绑定:bindlst,bind2nd |
| 206 | + 8.4.3 用于函数合成:compose1,compose2 |
| 207 | + 8.4.4 用于函数指针:ptr_fun |
| 208 | + 8.4.5 用于成员函数指针:mem_fun,mem_fun_ref |
| 209 | + 附录A 参考书籍与推荐读物(Bibliography) |
| 210 | + 附录B 侯捷网站(本书支持站点简介) |
| 211 | + 附录C STLPort的移植经验(by 孟岩) |
| 212 | + Borland C++Builder5 |
| 213 | + Microsoft Visual C++6.0 |
| 214 | + 索引 |
0 commit comments