当前位置:首页 > 工业技术
C++标准程序库  自修教程与参考手册
C++标准程序库  自修教程与参考手册

C++标准程序库 自修教程与参考手册PDF电子书下载

工业技术

  • 电子书积分:21 积分如何计算积分?
  • 作 者:(德)Nicolai M. Josuttis著;侯捷,孟岩译
  • 出 版 社:武汉:华中科技大学出版社
  • 出版年份:2002
  • ISBN:7560927823
  • 页数:799 页
图书介绍:
《C++标准程序库 自修教程与参考手册》目录

1.1 缘起 1

1.2 阅读前的必要基础 2

1.3 本书风格与结构 2

1.4 如何阅读本书 5

1.5 目前发展形势 5

1.6 范例程序代码及额外信息 5

1.7 响应 5

2.C++及其标准程序库简介 7

2.1 沿革 7

2.2.1 template(模板) 9

2.2 新的语言特性 9

2.2.2 基本型别的显式初始化(Explicit Initialization) 14

2.2.3 异常处理(Exception Handling) 15

2.2.4 命名空间(Namespaces) 16

2.2.5 bool型别 18

2.2.6 关键字explicit 18

2.2.7 新的型别转换操作符(Type Conversion Operators) 19

2.2.8 常数静态成员(Constant Static Members)的初始化 20

2.2.9 main()的定义式 21

2.3 复杂度和Big-O表示法 21

3.1 命名空间(namespace)std 23

3.一般概念(General Concepts) 23

3.2 头文件(Header Files) 24

3.3 错误(Error)处理和异常(Exception)处理 25

3.3.1 标准异常类别(Standard Exception Classes) 25

3.3.2 异常类别(Exception Classes)的成员 28

3.3.3 抛出标准异常 29

3.3.4 从标准异常类别(Exception Classes)中派生新类别 30

3.4 配置器(Allocators) 31

4.通用工具(Utilities) 33

4.1 Pairs(对组) 33

4.1.1 便捷函数make_pair() 36

4.1.2 Pair运用实例 37

4.2 Class auto ptr 38

4.2.1 auto_ptr的设计动机 38

4.2.2 auto_ptr拥有权(Ownership)的转移 40

4.2.3 auto_ptrs作为成员之一 44

4.2.4 auto_ptrs的错误运用 46

4.2.5 auto_ptr运用实例 47

4.2.6 auto_ptr实作细目 51

4.3 数值极限(Numeric Limits) 59

4.4 辅助函数 66

4.4.1 挑选较小值和较大值 66

4.4.2 两值互换 67

4.5 辅助性的“比较操作符”(Comparison Operators) 69

4.6 头文件〈cstddef〉和〈cstdlib〉 71

4.6.1 〈cstddef〉内的各种定义 71

4.6.2 〈cstdlib〉内的各种定义 71

5.Standard Template Library(STL,标准模板库) 73

5.1 STL组件(STL Components) 73

5.2 容器(Containers) 75

5.2.1 序列式容器(Sequence Containers) 76

5.2.2 关联式容器(Associative Containers) 81

5.2.3 容器配接器(Container Adapters) 82

5.3 迭代器(Iterators) 83

5.3.1 关联式容器的运用实例 86

5.3.2 迭代器分类(Iterator Categories) 93

5.4 算法(Algorithms) 94

5.4.1 区间(Ranges) 97

5.4.2 处理多个区间 101

5.5 迭代器之配接器(Iterator Adapters) 104

5.5.1 Insert Iterators(安插型迭代器) 104

5.5.2 Stream Iterators(流迭代器) 107

5.5.3 Reverse Iterators(逆向迭代器) 109

5.6.1 移除(Removing)元素 111

5.6 更易型算法(Manipulating Algorithms) 111

5.6.2 更易型算法和关联式容器 115

5.6.3 算法vs.成员函数 116

5.7 使用者自定义之泛型函数(User-Defined Generic Functions) 117

5.8 以函数作为算法的参数 119

5.8.1 “以函数作为算法的参数”实例示范 119

5.8.2 判断式(Predicates) 121

5.9 仿函数(Functors,Function Objects) 124

5.9.1 什么是仿函数 124

5.9.2 预先定义的仿函数 131

5.10.1 容器元素的条件 134

5.10 容器内的元素 134

5.10.2 Value语意vs.Reference语意 135

5.11 STL内部的错误处理和异常处理 136

5.11.1 错误处理(Error Handling) 137

5.11.2 异常处理(Exception Handling) 139

5.12 扩展STL 141

6.STL容器(STL Container) 143

6.1 容器的共通能力和共通操作 144

6.1.1 容器的共通能力 144

6.1.2 容器的共通操作 144

6.2 Vectors 148

6.2.1 Vectors的能力 148

6.2.2 Vector的操作函数 150

6.2.3 将Vectors当做一般Arrays使用 155

6.2.4 异常处理(Exception Handling) 155

6.2.5 Vectors运用实例 156

6.2.6 Class vector〈bool〉 158

6.3 Deques 160

6.3.1 Deques的能力 161

6.3.2 Deques的操作函数 162

6.3.3 异常处理(Exception Handling) 164

6.3.4 Deques运用实例 164

6.4.1 Lists的能力 166

6.4 Lists 166

6.4.2 Lists的操作函数 167

6.4.3 异常处理(Exception Handling) 172

6.4.4 Lists运用实例 172

6.5 Sets和Multisets 175

6.5.1 Sets和Multisets的能力 176

6.5.2 Sets和Multisets的操作函数 177

6.5.3 异常处理(Exception Handling) 185

6.5.4 Sets和Multisets运用实例 186

6.5.5 执行期指定排序准则 191

6.6 Maps和Multimaps 194

6.6.1 Maps和Multimaps的能力 195

6.6.2 Maps和Multimaps的操作函数 196

6.6.3 将Maps视为关联式数组(Associated Arrays) 205

6.6.4 异常处理(Exception Handling) 207

6.6.5 Maps和Multimaps运用实例 207

6.6.6 综合实例:运用Maps,Strings并于执行期指定排序准则 213

6.7 其它STL容器 217

6.7.1 Strings可被视为一种STL容器 217

6.7.2 Arrays可被视为一种STL容器 218

6.7.3 Hash Tables 221

6.8 动手实现Reference语义 222

6.9 各种容器的运用时机 226

6.10.1 容器内的型别 230

6.10 细说容器内的型别和成员 230

6.10.2 生成(Create)、复制(Copy)、销毁(Destroy) 231

6.10.3 非变动性操作(Nonmodifying Operations) 233

6.10.4 赋值(Assignments) 236

6.10.5 直接元素存取 237

6.10.6 “可返回迭代器”的各项操作 239

6.10.7 元素的安插(Inserting)和移除(Removing) 240

6.10.8 Lists的特殊成员函数 244

6.10.9 对配置器(Allocator)的支持 246

6.10.10 综观STL容器的异常处理 248

7.2 迭代器类型(Iterator Categories) 251

7.STL迭代器(STL Iterators) 251

7.1 迭代器头文件 251

7.2.1 Input(输入)迭代器 252

7.2.2 Output(输出)迭代器 253

7.2.3 Forward(前向)迭代器 254

7.2.4 Bidirectional(双向)迭代器 255

7.2.5 Random Access(随机存取)迭代器 255

7.2.6 Vector迭代器的递增(Increment)和递减(Decrement) 258

7.3 迭代器相关辅助函数 259

7.3.1 advance()可令迭代器前进 259

7.3.2 distance()可处理迭代器之间的距离 261

7.3.3 iter_swap()可交换两个迭代器所指内容 263

7.4 迭代器配接器(Iterator Adapters) 264

7.4.1 Reverse(逆向)迭代器 264

7.4.2 Insert(安插型)迭代器 271

7.4.3 Stream(流)迭代器 277

7.5 迭代器特性(Iterator Traits) 283

7.5.1 为迭代器编写泛型函数 285

7.5.2 使用者自定义(User-Defined)的迭代器 288

8.STL仿函数(functors)(又名函数对象,function objects) 293

8.1 仿函数(functor)的概念 293

8.1.1 仿函数可当做排序准则(Sort Criteria) 294

8.1.2 拥有内部状态(Internal State)的仿函数 296

8.1.3 for_each()的回返值 300

8.1.4 判断式(Predicates)和仿函数(Functors) 302

8.2 预定义的仿函数 305

8.2.1 函数配接器(Function Adapters) 306

8.2.2 针对成员函数而设计的函数配接器 307

8.2.3 针对一般函数(非成员函数)而设计的函数配接器 309

8.2.4 让自定仿函数也可以使用函数配接器 310

8.3 辅助用(组合型)仿函数 313

8.3.1 一元组合函数配接器(Unary Compose Function Object Adapters) 314

8.3.2 二元组合函数配接器(Binary Compose Function Object Adapters) 318

9.1 算法头文件(header files) 321

9.STL算法(STL Algorithms) 321

9.2 算法概览 322

9.2.1 简介 322

9.2.2 算法分门别类 323

9.3 辅助函数 332

9.4 for_each()算法 334

9.5 非变动性算法(Nonmodifying Algorithms) 338

9.5.1 元素计数 338

9.5.2 最小值和最大值 339

9.5.3 搜寻元素 341

9.5.4 区间的比较 356

9.6 变动性算法(Modifying Algorithms) 363

9.6.1 复制(Copying)元素 363

9.6.2 转换(Transforming)和结合(Combining)元素 366

9.6.3 互换(Swapping)元素内容 370

9.6.4 赋予(Assigning)新值 372

9.6.5 替换(Replacing)元素 375

9.7 移除性算法(Removing Algorithms) 378

9.7.1 移除某些特定元素 378

9.7.2 移除重复元素 381

9.8.1 逆转(Reversing)元素次序 386

9.8 变序性算法(Mutating Algorithms) 386

9.8.2 旋转(Rotating)元素次序 388

9.8.3 排列(Permuting)元素 391

9.8.4 重排元素(Shuffling,搅乱次序) 393

9.8.5 将元素向前搬移 395

9.9 排序算法(Sorting Algorithms) 397

9.9.1 对所有元素排序 397

9.9.2 局部排序(Partial Sorting) 400

9.9.3 根据第n个元素排序 404

9.9.4 Heap算法 406

9.10 已序区间算法(Sorted Range Algorithms) 409

9.10.1 搜寻元素(Searching) 410

9.10.2 合并元素(Merging) 416

9.11 数值算法(Numeric Algorithms) 425

9.11.1 加工运算后产生结果 425

9.11.2 相对值和绝对值之间的转换 429

10.特殊容器(Special Containers) 435

10.1 Stacks(堆栈) 435

10.1.1 核心接口 436

10.1.2 Stacks运用实例 437

10.1.3 Class stack〈〉细部讨论 438

10.1.4 一个使用者自定义的Stack Class 441

10.2 Queues(队列) 444

10.2.1 核心接口 445

10.2 2 Queues运用实例 446

10.2.3 Class queue〈〉细部讨论 447

10.2.4 一个使用者自定义的Queue Class 450

10.3 Priority Queues(优先队列) 453

10.3.1 核心接口 455

10.3.2 Priority Queues运用实例 455

103.3 Classpriority_queue〈〉细部讨论 456

10.4 Bitsets 460

10.4.1 Bitsets运用实例 460

10.4.2 Class bitset细部讨论 463

11.Strings(字符串) 471

11.1 动机 471

11.1.1 例一:引出一个临时文件名 472

11.1.2 例二:引出一段文字并逆向打印 476

11.2 String Classes细部描述 479

11.2.1 String的各种相关型别 479

11.2.2 操作函数(Operations)综览 481

11.2.3 构造函数和析构函数(Constructors and Destructors) 483

11.2.4 Strings和C-Strings 484

11.2.5 大小(Size)和容量(Capacity) 485

11.2.6 元素存取(Element Access) 487

11.2.7 比较(Comparisons) 488

11.2.8 更改内容(Modifiers) 489

11.2.9 子串和字符串接合(concatenation) 492

11.2.10 I/O操作符 492

11.2.11 搜索和查找(Searching and Finding) 493

11.2.12 数值npos的意义 495

11.2.13 Strings对迭代器的支持 497

11.2.14 国际化(Internationalization) 503

11.2.15 效率(Performance) 506

11.2.16 Strings和Vectors 506

11.3.1 内部的型别定义和静态值 507

11.3 细说String Class 507

11.3.2 生成(Create)、拷贝(Copy)、销毁(Destroy) 508

11.3.3 大小(Size)和容量(Capacity) 510

11.3.4 比较(Comparisons) 511

11.3.5 字符存取(Character Access) 512

11.3.6 产生C-String和字符数组(Character Arrays) 513

11.3.7 更改内容 514

11.3.8 搜寻(Searching and Finding) 520

11.3.9 子字符串及字符串接合(String Concatenation) 524

11.3.10 I/O函数 524

11.3.11 产生迭代器 525

11.3.12 对配置器(allocator)的支持 526

12.数值(Numerics) 529

12.1 复数(Complex Numbers) 529

12.1.1 Class Complex运用实例 530

12.1.2 复数的各种操作 533

12.1.3 Class complex〈〉细部讨论 541

12.2 Valarrays 547

12.2.1 认识Valarrays 547

12.2.2 Valarray 的子集(Subsets) 553

12.2.3 Class valarray细部讨论 569

12.2.4 Valarray 子集类别(Subset Classes)细部讨论 575

12.3 全局性的数值函数 581

13.以Stream Classes完成输入和输出 583

13.1 IOStreams基本概念 584

13.1.1 Stream对象 584

13.1.2 Stream类别 584

13.1.3 全局性的Stream对象 585

13.1.4 Stream操作符 586

13.1.5 操控器(Manipulators) 586

13.1.6 一个简单的例子 587

13.2 基本的Stream类别和Stream对象 588

13.2.1 相关类别及其阶层体系 588

13.2.2 全局性的Stream对象 591

13.2.3 头文件(Headers) 592

13.3 标准的Stream操作符〈〈和〉〉 593

13.3.1 output操作符〈〈 593

13.3.2 input操作符〉〉 594

13.3.3 特殊型别的I/O 595

13.4 Streams的状态(state) 597

13.4.1 用来表示Streams状态的一些常数 597

13.4.2 用来处理Streams状态的一些成员函数 598

13.4.3 Stream状态与布尔条件测试 600

13.4.4 Stream的状态和异常 602

13.5.1 输入用的成员函数 607

13.5 标准I/O函数 607

13.5.2 输出用的成员函数 610

13.5.3 运用实例 611

13.6 操控器(Manipulators) 612

13.6.1 操控器如何运作 612

13.6.2 使用者自定义操控器 614

13.7 格式化(Formatting) 615

13.7.1 格式标志(Format Flags) 615

13.7.2 布尔值(Boolean Values)的I/O格式 617

13.7.3 字段宽度、充填字符、位置调整 618

13.7.4 正记号与大写字符 620

13.7.5 数值进制(Numberic Base) 621

13.7.6 浮点数(Floating-Point)表示法 623

13.7.7 一般性的格式定义 625

13.8 国际化(Internationalization) 625

13.9 文件存取(File Access) 627

13.9.1 文件标志(File Flags) 631

13.9.2 随机存取 634

13.9.3 使用文件描述符(File Descriptors) 637

13.10 连接Input Streams和Output Streams 637

13.10.1 以tie()完成“松耦合”(Loose Coupling) 637

13.10.2 以stream缓冲区完成“紧耦合”(Tight Coupling) 638

13.10.3 将标准Streams重新定向(Redirecting) 641

13.10.4 用于读写的Streams 643

13.11 String Stream Classes 645

13.11.1 String Stream Classes 645

13.11.2 char Stream Classes 649

13.12 “使用者自定义型别”之I/O操作符 652

13.12.1 实作一个output操作符 652

13.12.2 实作一个input操作符 654

13.12.3 以辅助函数完成I/O 656

13.12.4 以非格式化函数完成使用者自定义的操作符 658

13.12.5 使用者自定义的格式标志(Format Flags) 659

13.12.6 使用者自定义之I/O操作符的数个依循惯例 662

13.13 Stream Buffer Classes 663

13.13.1 从使用者的角度看Stream缓冲区 663

13.13.2 Stream缓冲区迭代器(Buffer Iterators) 665

13.13.3 使用者自定义的Stream缓冲区 668

13.14 关于性能(Performance) 681

13.14.1 与C标准串流(Standard Streams)同步 682

13.14.2 Stream缓冲区内的缓冲机制 682

13.14.3 直接使用Stream缓冲区 683

14.国际化(Internationalization,i18n) 685

14.1.1 宽字符(Wide-Characer)和多字节(Multibyte)文本 686

14.1 不同的字符编码(Character Encodings) 686

14.1.2 字符特性(Character Traits) 687

14.1.3 特殊字符国际化 691

14.2 Locales的概念 692

14.2.1 运用Locales 693

14.2.2 Locale Facets 698

14.3 Locales细部讨论 700

14.4 Facets细部讨论 704

14.4.1 数值格式化 705

14.4.2 时间和日期的格式化 708

14.4.3 货币符号格式化 711

14.4.4 字符的分类和转换 715

14.4.5 字符串校勘(String Collation) 724

14.4.6 信息国际化 725

15.空间配置器(Allocator) 727

15.1 应用程序开发者如何使用配置器 727

15.2 程序库开发者如何使用配置器 728

15.3 C++标准程序库的缺省配置器 732

15.4 使用者自行定义的配置器 735

15.5 配置器细部讨论 737

15.5.1 型别定义 737

15.5.2 各项操作 739

15.6 “未初始化内存”之处理工具细部讨论 740

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