STL源码剖析PDF电子书下载
- 电子书积分:15 积分如何计算积分?
- 作 者:侯捷著
- 出 版 社:武汉:华中科技大学出版社
- 出版年份:2002
- ISBN:7560926991
- 页数:494 页
第1章 STL 概论与版本简介 1
1.1 STL概论 1
1.1.1 STL的历史 3
1.1.2 STL与C++标准程序库 3
1.2 STL六大组件 功能与运用 4
1.3 GNU源代码开放精神 7
1.4 HP实现版本 9
1.5 P.J.Plauger实现版本 10
1.6 Rouge Wave实现版本 11
1.7 STLport实现版本 12
1.8 SGI STL实现版本 13
1.8.1 GNU C++headers文件分布(按字母排序) 14
1.8.2 SGI STL文件分布与简介 16
(1)STL标准头文件(无扩展名) 17
(2)C++Standard定案前,HP规范的STL头文件(扩展名.h) 17
(3)SGI STL 内部私用文件(SGI STL真正实现于此) 18
1.8.3 SGI STL的编译器组态设置(configuration) 19
1.9 可能令你困惑的C++ 语法 26
1.9.1 stl_config.h中的各种组态 27
组态3:static template member 27
组态5:class template partial specialization 28
组态6:function template partial order 29
组态7:explicit function template arguments 29
组态8:member templates 29
组态10:default template argument depend on previous template parameters 30
组态11:non-type template parameters 31
组态:bound friend template function 32
组态:class template explicit specialization 34
1.9.2 临时对象的产生与运用 36
1.9.3 静态常量整数成员在class内部直接初始化 37
1.9.4 increment/decrement/dereference 操作符 37
1.9.5 前闭后开区间表示法? 39
1.9.6 function call操作符(operator()) 40
第2章 空间配置器(allocator) 43
2.1 空间配置器的标准接口 43
2.1.1 设计一个简单的空间配置器,JJ::allocator 44
2.2 具备次配置力(sub-allocation)的SGI空间配置器 47
2.2.1 SGI标准的空间配置器,std::allocator 47
2.2.2 SGI特殊的空间配置器,std::alloc 49
2.2.3 构造和析构基本工具:construct()和destroy() 51
2.2.4 空间的配置与释放,std::alloc 53
2.2.5 第一级配置器_malloc_alloc_template剖析 56
2.2.6 第二级配置器_default_alloc_template剖析 59
2.2.7 空间配置函数allocate() 62
2.2.8 空间释放函数deallocate() 64
2.2.9 重新充填free lists 65
2.2.10 内存池(memory pool) 66
2.3 内存基本处理工具 70
2.3.1 uninitialized_copy 70
2.3.2 uninitialized_fill 71
2.3.3 uninitialized_fill_n 71
第3章 迭代器(iterators)概念与traits编程技法 79
3.1 迭代器设计思维——STL关键所在 79
3.2 迭代器(iterator)是一种smart pointer 80
3.3 迭代器相应型别(associated types) 84
3.4 Traits编程技法——STL源代码门钥 85
Partial Specialization(偏特化)的意义 86
3.4.1 迭代器相应型别之一:value_type 90
3.4.2 迭代器相应型别之二:difference_type 90
3.4.3 迭代器相应型别之三:reference_type 91
3.4.4 迭代器相应型别之四:pointer_type 91
3.4.5 迭代器相应型别之五:iterator_category 92
以advanced()为例 93
消除“单纯传递调用的函数” 97
以distance()为例 98
3.5 std::iterator的保证 99
3.6 iterator源代码完整重列 101
3.7 SGI STL的私房菜:_type_traits 103
第4章 序列式容器(sequence containers) 113
4.1 容器的概观与分类 113
4.1.1 序列式容器(sequential containers) 114
4.2 vector 115
4.2.1 vector概述 115
4.2.2 vector定义摘要 115
4.2.3 vector的迭代器 117
4.2.4 vector的数据结构 118
4.2.5 vector的构造与内存管理:constructor,push_back 119
4.2.6 vector的元素操作:pop_back,erase,clear,insert 123
4.3 list 128
4.3.1 list概述 128
4.3.2 list的节点(node) 129
4.3.3 list的迭代器 129
4.3.4 list的数据结构 131
4.3.5 list的构造与内存管理:constructor,push_back,insert 132
4.3.6 list的元素操作:push_front,push_back,erase,pop_front,pop_back,clear,remove,unique,splice,merge,reverse,sort 136
4.4 deque 143
4.4.1 deque概述 143
4.4.2 deque的中控器 144
4.4.3 deque的迭代器 146
4.4.4 deque的数据结构 150
4.4.5 deque的构造与内存管理ctor,push_back,push_front 152
4.4.6 deque的元素操作pop_back,pop_front,clear,erase,insert 161
4.5 stack 167
4.5.1 stack概述 167
4.5.2 stack定义完整列表 167
4.5.3 stack没有迭代器 168
4.5.4 以list作为stack的底层容器 168
4.6 queue 169
4.6.1 queue概述 169
4.6.2 queue定义完整列表 170
4.6.3 queue没有迭代器 171
4.6.4 以list作为queue的底层容器 171
4.7 heap(隐式表述,implicit representation) 172
4.7.1 heap概述 172
4.7.2 heap算法 174
push_heap算法 174
pop_heap算法 176
sort_heap算法 178
make heap算法 180
4.7.3 heap没有迭代器 181
4.7.4 heap测试实例 181
4.8 priority_queue 183
4.8.1 priority_queue概述 183
4.8.2 priority_queue定义完整列表 183
4.8.3 priority_queue没有迭代器 185
4.8.4 priority_queue测试实例 185
4.9 slist 186
4.9.1 slist概述 186
4.9.2 slist的节点 186
4.9.3 slist的迭代器 188
4.9.4 slist的数据结构 190
4.9.5 slist的元素操作 191
第5章 关联式容器 197
5.1 树的导览 199
5.1.1 二叉搜索树 200
5.1.2 平衡二叉搜索树 203
5.1.3 AVL tree 203
5.1.4 单旋转 205
5.1.5 双旋转 206
5.2 RB-tree(红黑树) 208
5.2.1 插入节点 209
5.2.2 一个由上而下的程序 212
5.2.3 RB-tree的节点设计 213
5.2.4 RB-tree的迭代器 214
5.2.5 RB-tree的数据结构 218
5.2.6 RB-tree的构造与内存管理 221
5.2.7 RB-tree的元素操作 223
元素插人操作insert_equal() 223
元素插入操作insert_unique() 224
真正的插入执行程序_insert() 224
调整RB-tree(旋转及改变颜色) 225
元素的搜寻 229
5.3 set 233
5.4 map 237
5.5 multiset 245
5.6 multimap 246
5.7 hashtable 247
5.7.1 hashtable概述 247
线性探测(linear probing) 249
二次探测(quadratic probing) 251
开链(separate chaining) 253
5.7.2 hashtable的桶子(buckets)与节点(nodes) 253
5.7.3 hashtable的迭代器 254
5.7.4 hashtable的数据结构 256
5.7.5 hashtable的构造与内存管理 258
插入操作(insert)与表格重整(resize) 259
判知元素的落脚处(bkt_num) 262
复制(copy_from)和整体删除(clear) 263
5.7.6 hashtable运用实例 264
5.7.7 hash functions 268
5.8 hash_set 270
5.9 hash_map 275
5.10 hash_multiset 279
5.11 hash_multimap 282
第6章 算法(algorithms) 285
6.1 算法概观 285
6.1.1 算法分析与复杂度表示O() 286
6.1.2 STL算法总览 288
6.1.3 质变算法mutating algorithms——会改变操作对象之值 291
6.1.4 非质变算法nonmutating algorithms——不改变操作对象之值 292
6.1.5 STL算法的一般形式 292
6.2 算法的泛化过程 294
6.3 数值算法<stl_numeric.h> 298
6.3.1 运用实例 298
6.3.2 accumulate 299
6.3.3 adjacent_difference 300
6.3.4 inner_product 301
6.3.5 partial_sum 303
6.3.6 power 304
6.3.7 itoa 305
6.4 基本算法<stl_algobase.h> 305
6.4.1 运用实例 305
6.4.2 equal 307
fill 308
fill_n 308
iter_swap 309
lexicographical_compare 310
max,min 312
mismatch 313
swap 314
6.4.3 copy——强化效率无所不用其极 314
6.4.4 copy_backward 326
6.5 Set相关算法 328
6.5.1 set_union 331
6.5.2 set_intersection 333
6.5.3 set_difference 334
6.5.4 set_symmetric_difference 336
6.6 heap算法 338
6.7 其它算法 338
6.7.1 单纯的数据处理 338
adjacent_find 343
count 344
count_if 344
find 345
find_it 345
find_end 345
find_first_of 348
for_each 348
generate 349
generate_n 349
includes(应用于有序区间) 349
max_element 352
merge(应用于有序区间) 352
min_element 354
partition 354
remove移除(但不删除) 356
remove_copy 357
remove_if 357
remove_copy_if 358
replace 359
replace_copy 359
replace_if 359
replace_copy_if 360
reverse 360
reverse_copy 361
rotate 361
rotate_copy 365
search 365
search_n 366
swap_ranges 369
transform 369
unique 370
unique_copy 371
6.7.2 lower_bound(应用于有序区间) 375
6.7.3 upper_bound(应用于有序区间) 377
6.7.4 binary_search(应用于有序区间) 379
6.7.5 next_permutation 380
6.7.6 prev_permutation 382
6.7.7 random_shuffle 383
6.7.8 partial_sort/partial_sort_copy 386
6.7.9 sort 389
6.7.10 equal_range(应用于有序区间) 400
6.7.11 inplace_merge(应用于有序区间) 403
6.7.12 nth_element 409
6.7.13 merge sort 411
第7章 仿函数(functors,另名 函数对象function objects) 413
7.1 仿函数(functor)概观 413
7.2 可配接(adaptable)的关键 415
7.2.1 unary_function 416
7.2.2 binary_function 417
7.3 算术类(Arithmetic)仿函数 418
7.4 关系运算类(Relational)仿函数 420
7.5 逻辑运算类(Logical)仿函数 422
7.6 证同(identity)、选择(select)、投射(project) 423
第8章 配接器(adapters) 425
8.1 配接器之概观与分类 425
8.1.1 应用于容器,container adapters 425
8.1.2 应用于迭代器,iterator adapters 425
8.1.3 应用于仿函数,functor adapters 428
8.2 container adapters 434
8.2.1 stack 434
8.2.2 queue 434
8.3 iterator adapters 435
8.3.1 insert iterators 435
8.3.2 reverse iterators 437
8.3.3 stream iterators 442
8.4 function adapters 448
8.4.1 对返回值进行逻辑否定:not1,not2 450
8.4.2 对参数进行绑定:bindlst,bind2nd 451
8.4.3 用于函数合成:compose1,compose2 453
8.4.4 用于函数指针:ptr_fun 454
8.4.5 用于成员函数指针:mem_fun,mem_fun_ref 456
附录A 参考书籍与推荐读物(Bibliography) 461
附录B 侯捷网站(本书支持站点简介) 471
附录C STLPort的移植经验(by 孟岩) 475
Borland C++Builder5 476
Microsoft Visual C++6.0 479
索引 483
- 《英汉翻译理论的多维阐释及应用剖析》常瑞娟著 2019
- 《人类文明因你而辉煌:诺贝尔奖历史追踪与剖析》吴乃优编著 2019
- 《深度剖析APACHE DUBBO核心技术内幕》翟陆续(加多)著 2019
- 《2019注册电气工程师执业职格考试专业基础考点剖析与真题详解》龚静主编 2019
- 《应用型本科规划教材 外贸函电实战 情境仿真+案例剖析》李为主编 2014
- 《上市公司典型违规案例剖析》信公咨询编 2017
- 《SDN核心技术剖析和实战指南》雷葆华编著 2013
- 《剖析油画的奥秘 写实人像》谭建武著 2013
- 《败仗的含金量 创业事故个案剖析》《创业天下》杂志编 2012
- 《教育“顽症”剖析 片面追求升学率原因、后果及对策的调查研究》“片面追求升学率原因、后果及对策”课题组编 1992
- 《中风偏瘫 脑萎缩 痴呆 最新治疗原则与方法》孙作东著 2004
- 《水面舰艇编队作战运筹分析》谭安胜著 2009
- 《王蒙文集 新版 35 评点《红楼梦》 上》王蒙著 2020
- 《TED说话的力量 世界优秀演讲者的口才秘诀》(坦桑)阿卡什·P.卡里亚著 2019
- 《燕堂夜话》蒋忠和著 2019
- 《经久》静水边著 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《微表情密码》(波)卡西亚·韦佐夫斯基,(波)帕特里克·韦佐夫斯基著 2019
- 《看书琐记与作文秘诀》鲁迅著 2019
- 《酒国》莫言著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《大学化学实验》李爱勤,侯学会主编 2016
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017