当前位置:首页 > 工业技术
泛型编程与STL
泛型编程与STL

泛型编程与STLPDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:(美)Matthew H.Austern著;侯捷译
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2003
  • ISBN:7508314875
  • 页数:548 页
图书介绍:自从被全世界软件界广泛运用以来,C++有了许多演化与变革。然而作为一个广为人知的面向对象程序语言,C++ 的另一面(泛型编程思维)却被严重地忽略了。泛型思维在C++身上主要以templates及相关特性来表现。C++ templates相关特性不难掌握,然而以此技术为载体所发展出来的一套泛型程序库——STL(现已纳入C++标准程序库),背后却另有一套严密逻辑。本书以C++为载体,第一篇讲述泛型思维的演进及STL的组织概念,第二篇整理 STL所涵盖的全部concepts的完整规格,第三篇整理STL所涵盖的全部components的完整规格。全书分为16章,并由此展开论述,既环环相扣,又相辅相成。本书附有英文索引,便于读者查阅。
《泛型编程与STL》目录
标签:编程

第一篇 泛型编程导入 1

第1章 STL巡礼 3

1.1 一个简单的例子 3

1.2 总结 7

第2章 算法与区间 9

2.1 线性查找(Linear Search) 9

2.1.1 以C完成线性查找 10

2.1.2 Ranges(区间) 12

2.1.3 以C++完成线性查找 13

2.2 Concepts和Modeling 16

2.3 Iterators(迭代器,泛型指针) 19

2.3.1 Input Iterators 20

2.3.2 Ouput Iterators 22

2.3.3 Forward Iterators Constant(不变的)Iterators和Mutable(可变的)Iterators 27

2.3.4 Bidirectional Iterators 27

2.3.5 Random Access Iterators 28

2.4 Refinement(精练、强化) 29

2.5 总结 31

3.1.1 Value Type(数值型别) 33

第3章 再论Iterators(迭代器or泛型指针) 33

3.1 Iterator Traits(迭代器特征)与Associated Types(相关型别) 33

3.1.2 Difference Type(差距型别) 36

3.1.3 Reference Type和Pointer Type 37

3.1.4 算法的处理与Iterator Tags 38

3.1.5 把一切统合起来 41

3.1.6 没有iterator_traits,如何制作Iterator Traits(迭代器特征) 43

3.2 定义新组件(New Components) 44

3.2.1 Iterator Adapters 46

3.2.3 定义算法时的建议 47

3.2.2 定义Iterator时的建议 47

3.3 总结 48

第4章 Function Objects(函数对象) 49

4.1 将线性查找一般化 49

4.2 Function Object Concepts(函数对象概念) 52

4.2.1 单参(Unary)与双参(Binary)Function Objects 52

4.2.2 Predicates和Binary Predicates 53

4.2.3 相关型别(Assocated Types) 54

4.3 Function Object Adapters(函数对象配接器) 56

4.5 总结 58

4.4 预定义的Function Objects 58

第5章 Containers(容器) 59

5.1 一个简单的Container 59

5.1.1 一个Array Class 60

5.1.2 它是如何运作的 63

5.1.3 最后讨论 63

5.2 Container Concepts 67

5.2.2 Iterators 68

5.2.1 元素的容纳(Containment of Elements) 68

5.2.3 Containers的阶层架构(Hierarchy) 70

5.2.4 最平淡无奇的Container 71

5.3 大小可变的Container Concepts 72

5.3.1 Sequences(序列) 73

其他形式的insert与erase 74

安插(Insertion)于开头(Front)和尾端(Back) 74

安插(Insertion)语义和覆盖(Overwrite)语义 75

5.3.2 Associative Containers(关联式容器) 75

5.4 总结 78

5.4.1 我们应该使用什么样的Container? 78

5.3.3 Allocators(配置器) 78

5.4.2 设计你自己的Container 79

第二篇 参考手册:STL Concepts 81

第6章 基本概念 83

6.1 Assignable 83

6.2 Default Constructible 84

6.3 Equality Comparable 85

6.4 可序性(Ordering) 86

6.4.1 LessThan Comparable 86

6.4.2 Strict Weakly Comparable 88

7.1 Trivial lterator 91

第7章 Iterators(迭代器or泛型指针) 91

7.2 Input lterator 94

7.3 Output lterator 96

7.4 Forward lterator 100

7.5 Bidirectional lterator 102

7.6 Random Access lterator 103

第8章 Function Objects(函数对象) 109

8.1 基本的Function Objects 109

8.1.1 Generator 110

8.1.2 Unary Function 111

8.1.3 Binary Function 112

8.2 Adaptable Function Objects 113

8.2.1 Adaptable Generator 113

8.2.2 Adaptable Unary Function 114

8.2.3 Adaptable Binary Function 115

8.3 Predicates 116

8.3.1 Predicate 116

8.3.2 Binary Predicate 117

8.3.3 Adaptable Predicate 118

8.3.5 Strict Weak Ordering 119

8.3.4 Adaptable Binary Predicate 119

8.4 特化的Concept 122

8.4.1 Random Number Generator 122

8.4.2 Hash Function(散列函数) 123

第9章 Containers(容器) 125

9.1 General Container Concepts 125

9.1.1 Container 125

9.1.2 Forward Container 131

9.1.3 Reversible Container 133

9.1.4 Random Access Container 135

9.2.1 Sequence 136

9.2 Sequence(序列:循序式容器) 136

9.2.2 Front lnsertion Sequence 141

9.2.3 Back Insertion Sequence 143

9.3 Associative Containers(关联式容器) 145

9.3.1 Associative Container 145

9.3.2 Unique Associative Container 149

9.3.3 Multiple Associative Container 152

9.3.4 Simple Associative Container 153

9.3.5 Pair Associative Container 155

9.3.6 Sorted Associative Container 156

9.3.7 Hashed Associative Container 161

9.4 Allocator(空间配置器) 166

第三篇 参考手册:算法与类 173

第10章 基本组件 175

10.1 pair 175

10.2 Iterator基本要素(Iterator Primitives) 177

10.2.1 iterator_traits 177

10.2.2 Iterator Tag Classes 179

10.2.3 distance 181

10.2.4 advance 183

10.2.5 Iterator Base Class 185

10.3 allocator 187

10.4 内存管理基本要素(Memory Management Primitives) 189

10.4.1 construct 189

10.4.2 destroy 190

10.4.3 uninitialized_copy 192

10.4.4 uninitialized_fill 194

10.4.5 uninitialized_fill_n 195

10.5 临时缓冲区(Temporary Buffers) 196

10.5.1 get_temporary_buffer 197

10.5.2 return_temporary_buffer 198

第11章 「不改变操作对象之内容」的算法 199

11.1 线性查找(Linear Search) 199

11.1.1 find 199

11.1.2 find_if 200

11.1.3 adjacent_find 202

11.1.4 find_first_of 204

11.2 子序列匹配(Subsquence Matching) 206

11.2.1 search 206

11.2.2 find_end 209

11.2.3 search_n 211

11.3 计算元素个数(Counting Elements) 214

11.3.1 count 214

11.3.2 count_if 216

11.4 for_each 218

11.5 比较两个Ranges 220

11.5.1 equal 220

11.5.2 nismatch 222

11.5.3 lexicographical_compare 225

11.6.1 min 227

11.6 最大值与最小值 227

11.6.2 max 228

11.6.3 min_element 229

11.6.4 max_element 231

第12章 「会改变操作对象之内容」的算法 233

12.1 拷贝某个区间(Copying Ranges) 233

12.1.1 copy 233

12.1.2 copy_backward 236

12.2 互换元素(Swapping Elements) 237

12.2.1 swap 237

12.2.2 iter_swap 238

12.2.3 swap_ranges 239

12.3 transform 240

12.4 替换元素(Replacing Elements) 243

12.4.1 replace 243

12.4.2 replace_if 244

12.4.3 replace_copy 246

12.4.4 replace_copy_if 248

12.5.1 fill 249

12.5 充填整个区间(Filling Ranges) 249

12.5.2 fill_n 250

12.5.3 generate 251

12.5.4 generate_n 252

12.6 移除元素(Removing Elements) 253

12.6.1 remove 253

12.6.2 remove_if 255

12.6.3 remove_copy 256

12.6.4 remove_copy_if 258

12.6.5 unique 259

12.6.6 unique_copy 262

12.7 排列算法(Permuting Algorithms) 264

12.7.1 reverse 264

12.7.2 reverse_copy 265

12.7.3 rotate 266

12.7.4 rotate_copy 268

12.7.5 next_permutation 269

12.7.6 prev_permutation 271

12.8 分割(Partitions) 273

12.8.1 partition 273

12.8.2 stable_partition 274

12.9 随机重排与抽样(Random Shuffling and Sampling) 275

12.9.1 random_shuffle 276

12.9.2 random_sample 277

12.9.3 random_sample_n 279

12.10 一般化之数值算法(Generalized Numeric Algorithms) 281

12.10.1 accumulate 281

12.10.2 inner_product 283

12.10.3 partial_sum 285

12.10.4 adjacent_difference 287

13.1 对某个区间排序(Sorting Ranges) 291

第13章 排序和查找 291

13.1.1 sort 292

13.1.2 stable_sort 294

13.1.3 partial_sort 297

13.1.4 partial_sort_copy 300

13.1.5 nth_element 301

13.1.6 is_sorted 303

13.2 sorted ranges上的操作行为 305

13.2.1 二分查找法(Binary Search) 305

13.2.1.1 binary_search 306

13.2.1.2 lower_bound 308

13.2.1.3 upper_bound 310

13.2.1.4 equal_range 313

13.2.2 合并(Merging)两个Sorted Ranges 316

13.2.2.1 merge 316

13.2.2.2 inplace_merge 318

13.2.3 在Sorted Ranges身上执行集合(Set)相关操作 320

13.2.3.1 includes 321

13.2.3.2 set_union 324

13.2.3.3 set_intersection 327

13.2.3.4 set_difference 330

13.2.3.5 set_symmetric_difference 333

13.3 堆的相关操作(Heap Operations) 336

13.3.1 make_heap 336

13.3.2 push_heap 338

13.3.3 pop_heap 339

13.3.4 sort_heap 342

13.3.5 is_heap 343

14.1 Insert Iterators 345

14.1.1 front_insert_iterator 345

第14章 Iterator Classes(迭代器类) 345

14.1.2 back_insert_iterator 348

14.1.3 insert_iterator 351

14.2 Stream Iterators 354

14.2.1 istream_iterator 354

14.2.2 ostream_iterator 357

14.2.3 istreambuf_iterator 359

14.2.4 ostreambuf_iterator 362

14.3 reverse_iterator 363

14.4 raw_storage_iterator 368

15.1.1 unary_function 371

15.1 Function Object Base Classes 371

第15章 Function Object Classes(函数对象类) 371

15.1.2 binary_function 372

15.2 算术运算(Arithmetic Operations) 373

15.2.1 plus 373

15.2.2 minus 375

15.2.3 multiplies 376

15.2.4 divides 378

15.2.5 modulus 379

15.2.6 negate 380

15.3 大小比较(Comparisons) 382

15.3.1 equal_to 382

15.3.2 not_equal_to 383

15.3.3 less 384

15.3.4 greater 386

15.3.5 less_equal 387

15.3.6 greater_equal 388

15.4 逻辑运算(Logical Operations) 390

15.4.1 logical_and 390

15.4.2 logical_of 391

15.4.3 logical_not 393

15.5 证同(Identity)与投射(Projection) 394

15.5.1 identity 394

15.5.2 projectlst 395

15.5.3 project2nd 397

15.5.4 selectlst 398

15.5.5 eslect2nd 399

15.6 特殊的Function Objects 400

15.6.1 hash 400

15.6.2 subtractive_rng 402

15.7 Member Function Adapters 403

15.7.1 mem_fun_t 404

15.7.2 mem_fun_ref_t 406

15.7.3 mem_funl_t 408

15.7.4 mem_funl_ref_t 410

15.7.5 const_mem_fun_t 412

15.7.6 const_mem_fun_ref_t 414

15.7.7 const_mem_funl_t 416

15.7.8 const_mem_funl_ref_t 418

15.8.1 binderlst 421

15.8 其他的Adapters 421

15.8.2 binder2nd 422

15.8.3 pointer_to_unary_function 424

15.8.4 pointer_to_binary_function 426

15.8.5 unary_negate 428

15.8.6 binary_negate 429

15.8.7 unary_compose 431

15.8.8 binary_compose 433

16.1.1 vector 435

16.1 序列(Sequences) 435

第16章 Container Classes(容器类) 435

16.1.2 list 441

16.1.3 slist 448

16.1.4 deque 455

16.2 Associative Containers(关联式容器) 460

16.2.1 set 461

16.2.2 map 466

16.2.3 multiset 473

16.2.4 multimap 478

16.2.5 hash_set 484

16.2.6 hash_map 488

16.2.7 hash_multiset 494

16.2.8 hash_multimap 499

16.3 Container Adapters 504

16.3.1 stack 505

16.3.2 queue 507

16.3.3 priority_queue 510

附录A 可移植性与标准化 515

A.1 语言上的变动 516

A.1.1 Template编译模型(Compilation Model) 516

A.1.2 带缺省值的Template参数(Default Template Parameters) 517

A.1.3 Member Templates 518

A.1.4 偏特化(Partial Specialization) 519

A.1.5 新加入的关键字 521

A.2 程序库的变动 524

A.2.1 Allocator 524

A.2.2 Container Adapters 525

A.2.3 次要的程序库变动 526

A.3 命名及包装(Naming and Packaging) 527

参考书目 531

索引 535

相关图书
作者其它书籍
返回顶部