图书介绍
STL源码剖析pdf电子书版本下载
- 侯捷著 著
- 出版社: 武汉:华中科技大学出版社
- ISBN:7560926991
- 出版时间:2002
- 标注页数:494页
- 文件大小:32MB
- 文件页数:527页
- 主题词:
PDF下载
下载说明
STL源码剖析PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第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