图书介绍

STL源码剖析pdf电子书版本下载

STL源码剖析
  • 侯捷著 著
  • 出版社: 武汉:华中科技大学出版社
  • ISBN:7560926991
  • 出版时间:2002
  • 标注页数:494页
  • 文件大小:32MB
  • 文件页数:527页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快] 温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页 直链下载[便捷但速度慢]   [在线试读本书]   [在线获取解压码]

下载说明

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

精品推荐