《大道至简 (标准模板库)精解》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:闫常友编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111513995
  • 页数:735 页
图书介绍:众所周知,C++是在C语言之上发展起来的编程语言。几十年的发展历程,C++支持多种编程规范(过程化,面向对象,泛型)。并且C++国际标准不断更新,不断进步,尤其是C++14于2014年8月18日公布。C++的使用领域众广,多用于系统开发,引擎开发,等领域,几十年来一直是最受广大用户喜爱的编程语言之一。C++的STL算法库对常用数据结构和常用算法进行了封装。STL提供的算法对于广大程序员而言是非常便捷的,避免了重复开发,提高效率。回顾几年来C++程序开发在国内的发展情况,对于STL的认识和掌握还存在一些差距。本书献给喜欢C++ STL的朋友,当您看见这本书,您应该对C++ STL已有了一定的了解,希望继续深造;或者您已经暗下决心来学习它。那么本书将是您最佳的选择。全书共分为十七个篇章及一个附录。第一章主要是介绍相关的基本概念和基础知识,简要介绍了书中后面会用到的一些模版类型。从第二章开始,直至第十七章,逐次介绍了字符串类模版,容器,算法库,迭代器(访问容器的接口),数值计算模版,输入输出类模版,异常处理类模版,通用工具类模版,语言支持类模版,检测类模版,国际化类模版,仿函数,配置器,原子

第1章 预备知识及简介 1

1.1 基本概念 1

1.1.1 何谓“命名空间” 1

1.1.2 头文件 2

1.1.3 面向对象的程序设计 3

1.1.4 C++中的声明和定义 6

1.1.5 最简单的C++程序 8

1.1.6 指针 10

1.1.7 函数 12

1.1.8 文件 16

1.1.9 编译和链接 19

1.1.10 程序启动和终止 20

1.1.11 异常处理 20

1.1.12 预处理命令 21

1.1.13 宏 29

1.2 类模板定义 31

1.2.1 类模板实例化 32

1.2.2 类模板的成员函数 34

1.2.3 类模板的静态成员 34

1.3 成员模板 36

1.4 友元模板 37

1.5 函数模板 38

1.6 类模板的参数 42

1.7 STL简介 45

1.7.1 STL历史 45

1.7.2 STL组件 46

1.7.3 STL基本结构 46

1.7.4 STL编程概述 49

1.8 小结 51

第2章 字符串 52

2.1 字符串类库简述 52

2.2 字符的特点 54

2.3 字符串类模板(basic_string) 54

2.4 字符串通用操作 55

2.4.1 构造器和析构器 56

2.4.2 大小和容量 58

2.4.3 元素存取(访问) 60

2.4.4 字符串比较 61

2.4.5 字符串内容的修改和替换 64

2.4.6 字符串联接 71

2.4.7 字符串I/O操作 71

2.4.8 字符串查找 72

2.4.9 字符串对迭代器的支持 76

2.4.10 字符串对配置器的支持 78

2.5 小结 79

第3章 容器——对象储存器 80

3.1 容器概念 80

3.2 序列式容器 83

3.2.1 vector(向量)类模板 83

3.2.2 list(列表)类模板 103

3.2.3 deque(双端队列)类模板 124

3.3 关联式容器 133

3.3.1 set/multiset(集合)类模板 133

3.3.2 map/multimap(图)类模板 145

3.4 特殊容器用法 163

3.4.1 bitset(位集合)类模板 163

3.4.2 stack(栈)类模板 166

3.4.3 queue(队列)类模板 169

3.4.4 priority_queues(优先队列)类模板 172

3.5 小结 175

第4章 STL算法 176

4.1 算法库简介 176

4.2 非修改性算法 177

4.2.1 for_each()算法 177

4.2.2 元素计数算法 181

4.2.3 最小值和最大值算法 183

4.2.4 搜索算法 184

4.2.5 比较算法 193

4.3 修改性算法 197

4.3.1 复制 198

4.3.2 转换 200

4.3.3 互换 204

4.3.4 赋值 205

4.3.5 替换 207

4.3.6 逆转 208

4.3.7 旋转 210

4.3.8 排列 211

4.4 排序及相关操作算法 215

4.4.1 全部元素排序 215

4.4.2 局部排序 217

4.4.3 根据某个元素排序 219

4.4.4 堆(Heap)操作算法 221

4.4.5 容器合并、交集和差集算法 223

4.4.6 搜索算法 227

4.5 删除算法 229

4.6 小结 232

第5章 迭代器——访问容器的接口 233

5.1 迭代器及其特性 233

5.2 头文件<iterator> 234

5.3 迭代器类型详述 234

5.3.1 输入型迭代器 234

5.3.2 输出型迭代器 235

5.3.3 前向型迭代器 235

5.3.4 双向型迭代器 236

5.3.5 随机访问型迭代器 236

5.3.6 vector迭代器的递增和递减 237

5.4 迭代器配接器 237

5.4.1 逆向型迭代器 237

5.4.2 插入型迭代器 239

5.4.3 流型迭代器 241

5.5 迭代器辅助函数 244

5.5.1 前进advance()函数 244

5.5.2 距离distance()函数 245

5.5.3 交换两个迭代器所指内容iter_swap()函数 246

5.6 小结 248

第6章 数值计算类模板 249

6.1 复数运算 249

6.1.1 一个复数运算例题 249

6.1.2 复数类成员函数 250

6.1.3 复数类运算符 251

6.1.4 复数类运算 251

6.1.5 复数的超越函数运算 254

6.2 数组(向量)运算 256

6.2.1 类valarray 257

6.2.2 数组子集类——类slice和类模板slice_array 264

6.2.3 类gslice和类模板gslice_array 266

6.2.4 类mask_array 270

6.2.5 类indirect_array 271

6.3 通用数值计算 273

6.3.1 求和算法accumulate() 273

6.3.2 内积算法inner_product() 274

6.3.3 部分和算法partial_sum() 276

6.3.4 序列相邻差算法adjacent_difference() 277

6.4 全局性数学函数 279

6.5 小结 281

第7章 输入/输出类模板 282

7.1 IOStream简介 282

7.1.1 stream对象 282

7.1.2 stream类别 283

7.1.3 stream操作符 284

7.1.4 操控器 284

7.2 IOStream基本类和标准IOStream对象 285

7.2.1 头文件 285

7.2.2 标准stream操作符 285

7.2.3 stream状态 289

7.2.4 标准输入和输出函数 293

7.3 格式化 298

7.3.1 格式标识 298

7.3.2 bool类型数据的格式控制 300

7.3.3 详解“字段宽度、填充字符和位置调整” 300

7.3.4 正记号与大写字符 303

7.3.5 数值进制 304

7.3.6 浮点数输出 305

7.3.7 一般性格式定义 306

7.4 类streambuf 307

7.4.1 流缓冲区 307

7.4.2 缓冲区迭代器 309

7.4.3 自定义缓冲区 311

7.5 基于字符串的流 318

7.5.1 streambuf类 318

7.5.2 类模板basic_istringstream 319

7.5.3 类模板basic_ostringstream 320

7.5.4 类模板basic_stringstream 321

7.6 基于文件的流 321

7.6.1 文件标识及其使用 322

7.6.2 随机访问 332

7.6.3 4个类模板 336

7.6.4 C库中的文件存取功能概述 338

7.7 小结 340

第8章 异常处理类模板 341

8.1 异常的概念和基本思想 341

8.1.1 异常的概念 341

8.1.2 异常的分类 342

8.1.3 异常的捕捉和处理 344

8.1.4 资源管理 346

8.1.5 异常和效率 348

8.1.6 异常的描述 349

8.1.7 未捕捉的异常 352

8.2 异常类及几个重要问题 353

8.2.1 类exception 353

8.2.2 调用abort() 360

8.2.3 堆栈解退 362

8.2.4 错误代码 362

8.2.5 异常的迷失 363

8.2.6 异常处理的局限性 367

8.3 处理异常详述 369

8.4 异常的特殊处理函数 372

8.5 小结 373

第9章 通用工具类模板(Utility) 374

9.1 通用工具库简介 374

9.1.1 相等比较 374

9.1.2 小于比较 374

9.1.3 复制构造 377

9.1.4 配置器要求 377

9.1.5 运算符 379

9.1.6 对组(Pairs) 379

9.2 动态内存管理 385

9.2.1 默认配置器 385

9.2.2 raw_storage_iterator 387

9.2.3 临时缓冲区(Temporary Buffers) 387

9.2.4 特定算法 388

9.2.5 C函数库中的内存管理函数 389

9.3 堆的内存分配 389

9.3.1 new和delete运算符 389

9.3.2 分配固定维数的数组 390

9.3.3 分配动态内存数组 390

9.3.4 处理堆耗尽 391

9.4 辅助功能 391

9.4.1 数值极限 392

9.4.2 较大/较小值(最大/最小值) 395

9.4.3 两值交换 396

9.4.4 辅助性比较 398

9.4.5 头文件cstdlib和cstddef简介 399

9.5 日期和时间 400

9.5.1 3个类型 400

9.5.2 结构体(tm) 400

9.5.3 相关时间函数 401

9.5.4 时间示例 403

9.6 模板类auto_ptr 405

9.6.1 auto_ptr类构造函数 406

9.6.2 类auto_ptr的成员及转换 407

9.6.3 使用类auto_ptr 407

9.7 小结 411

第10章 语言支持类模板 412

10.1 类型 412

10.2 执行属性 412

10.2.1 类模板numeric_limits及其成员 412

10.2.2 float_round_style和float_ denorm_style 416

10.2.3 数值极限的特殊化 417

10.2.4 C库函数 418

10.2.5 应用举例 418

10.3 程序的启动和终止 426

10.4 动态内存管理 427

10.4.1 内存的分配和释放 428

10.4.2 内存分配错误 431

10.4.3 应用举例 431

10.5 类型标识符 434

10.5.1 类type_info 434

10.5.2 类bad_cast 435

10.5.3 类bad_typeid 436

10.5.4 操作符typeid 436

10.5.5 操作符dynamic_cast 437

10.5.6 应用举例 437

10.6 异常处理 439

10.6.1 类exception 439

10.6.2 特殊异常处理 440

10.6.3 异常终止 441

10.6.4 未捕获异常(uncaught_exception) 441

10.6.5 应用举例 442

10.7 其他运行支持 444

10.7.1 概述 444

10.7.2 应用举例 445

10.8 小结 448

第11章 检测类模板详解 449

11.1 异常类 449

11.1.1 类logic_error 449

11.1.2 类domain_error 450

11.1.3 类invalid_argument 451

11.1.4 类length_error 452

11.1.5 类out_of_range 454

11.1.6 类runtime_error 455

11.1.7 类range_error 456

11.1.8 类overflow_error 457

11.1.9 类underflow_error 458

11.2 断言 459

11.3 错误编码 461

11.4 小结 462

第12章 国际化库详解 463

12.1 国际化元素 464

12.2 多种字符编码 464

12.2.1 宽字符和多字节文本 464

12.2.2 字符特性 465

12.2.3 特殊字符国际化 467

12.3 类locale 467

12.3.1 类locale概述 467

12.3.2 类locale的facet 470

12.3.3 区域表示和混合区域表示 473

12.3.4 流和区域 477

12.3.5 刻面的处理 477

12.4 标准locale的分类 479

12.4.1 类ctype 480

12.4.2 数值类的类locale 496

12.4.3 刻面numeric punctuation 503

12.4.4 模板类collate 506

12.4.5 类time 508

12.4.6 模板类monetary 515

12.4.7 类message retrieval 523

12.4.8 Program-defined facets 526

12.4.9 C库locale 527

12.5 细述使用刻面 528

12.5.1 数值的格式化 528

12.5.2 时间/日期的格式化 530

12.5.3 货币符号的格式化 533

12.5.4 字符的分类和转换 536

12.5.5 字符串校勘 541

12.5.6 信息国际化 542

12.6 小结 543

第13章 仿函数 544

13.1 仿函数的概念 544

13.1.1 仿函数的概念 544

13.1.2 仿函数的作用 545

13.2 预定义仿函数 553

13.3 辅助用仿函数 554

13.3.1 一元组合函数配接器 554

13.3.2 二元组合函数配接器 557

13.4 关系仿函数 558

13.4.1 等于(equal_to<type>()) 558

13.4.2 不等于(not_equal_to<type>()) 559

13.4.3 小于(less<type>()) 560

13.4.4 大于(greater<type>()) 561

13.4.5 大于等于(greater_equal)和小于等于(less_equal) 561

13.5 逻辑仿函数 562

13.5.1 谓词 562

13.5.2 逻辑仿函数 563

13.6 算术仿函数 567

13.6.1 加、减、乘、除仿函数 568

13.6.2 求余仿函数和求反仿函数 569

13.7 其他类型的仿函数 571

13.7.1 证和映射 571

13.7.2 仿函数hash和subtractive_mg 574

13.8 适配器 574

13.8.1 成员函数适配器 575

13.8.2 其他适配器 581

13.9 小结 590

第14章 配置器 591

14.1 使用配置器 591

14.2 C++STL默认的配置器(标准配置器) 593

14.3 自定义配置器 594

14.4 配置类的详细讨论 595

14.4.1 型别 595

14.4.2 配置类的成员函数 595

14.4.3 广义配置器 596

14.4.4 动态存储 597

14.4.5 C风格的分配 597

14.5 未初始化的内存 598

14.6 配置器示例 600

第15章 原子运行库模板 602

15.1 头文件<atomic>简介 602

15.1.1 无锁属性 602

15.1.2 3个模板 602

15.1.3 原子模板的常规操作 603

15.1.4 头文件中的模板函数及算术运算函数 605

15.1.5 原子类型atomic_flag 609

15.2 顺序及一致性 610

15.3 原子类型 611

15.3.1 模板类atomic 614

15.3.2 针对整型数据的特殊化模板 616

15.3.3 针对指针的特殊化模板 619

15.4 小结 621

第16章 线程控制类模板 622

16.1 要求和性能 622

16.1.1 异常 622

16.1.2 本地句柄 622

16.1.3 时序规定 622

16.1.4 可锁定类型 623

16.2 线程类 623

16.2.1 线程类成员变量id 624

16.2.2 线程类成员函数 624

16.2.3 命名空间this_thread 625

16.2.4 线程示例 626

16.3 互斥 629

16.3.1 mutex模板类 630

16.3.2 lock模板类 639

16.3.3 call_once 646

16.4 条件变量 647

16.4.1 类condition_variable 648

16.4.2 类condition_variable_any 655

16.5 模板类future 659

16.5.1 模板类future error、future_errc 和future_category以及共享状态 659

16.5.2 模板类promise 662

16.5.3 模板类future 666

16.5.4 模板类shared_future 670

16.5.5 仿函数async 671

16.5.6 模板类packaged_task 673

16.6 小结 677

第17章 正则表达式 678

17.1 定义及要求 678

17.2 类模板basic_regex 679

17.2.1 类模板basic_regex的声明 679

17.2.2 名称空间std::regex_constants 685

17.2.3 类regex_error 687

17.2.4 类模板regex traits 688

17.2.5 类basic_regex的使用 692

17.3 类模板sub_match和match_results 696

17.3.1 类模板sub_match 696

17.3.2 类模板match_results 698

17.4 正则表达式相关的3种算法 704

17.4.1 正则匹配算法regex_match 704

17.4.2 正则搜索算法regex_search 707

17.4.3 正则替换算法regex_replace 708

17.5 正则表达式的迭代器 711

17.5.1 迭代器regex_iterator 711

17.5.2 迭代器regex_token_iterator 713

17.6 小结 719

附录部分 C函数库详解 720

附录A 数学函数 720

A.1 数学函数库中的宏 720

A.2 浮点计算减法协议开关 721

A.3 数学库中的宏函数 721

A.4 三角函数和反三角函数 722

A.5 指数和对数函数 724

A.6 幂函数和绝对值函数 726

A.7 误差和gamma函数 727

A.8 近似取整函数 728

A.9 求余函数 729

A.10 操作处理函数 730

A.11 最大值、最小值和正差函数 730

A.12 浮点乘加函数 730

A.13 比较函数(宏) 731

附录B 数据类型转换 731

B.1 字符转整数函数(atoi()和atol()) 731

B.2 字符型转换浮点型函数(atof()和atol()) 732

B.3 整型数转字符串函数(itoa()、ltoa()和ultoa()) 732

B.4 浮点数转换字符串函数 734