《C++STL标准程序库开发指南》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:闫常友,王敏著
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2013
  • ISBN:9787113161743
  • 页数:572 页
图书介绍:本书总共分为十四个篇章及两个附录。按照章节的先后顺序,由浅入深地讲解C++ STL应用开发技术。本书力求将STL涉及的问题,一一列出讲解,使初学者能够少走些弯路。本书的示例程序都是作者亲自编写或从MSDN中摘录,简单易学,有助于读者掌握STL的知识。读者在学习的时候不要漏掉任何一个例题。

第1章 类模板简介 1

1.1基本概念 1

1.1.1命名空间 1

1.1.2头文件 2

1.1.3面向对象的程序设计 3

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

1.1.5最简单的C+++程序 8

1.1.6指针 10

1.1.7函数 12

1.1.8文件 17

1.1.9程序的编译和链接 19

1.1.10程序的启动和终止 20

1.1.11异常处理 21

1.2类模板定义 21

1.2.1模板库(STL) 21

1.2.2 STL之父——Alexander Stepanov 22

1.2.3类模板的英文原始定义 22

1.2.4类模板实例化 22

1.2.5类模板的成员函数 24

1.2.6类模板的静态数据成员 24

1.3成员模板 26

1.4友元模板 28

1.5函数模板 29

1.6类模板的参数 32

1.6.1关键字typename的使用 33

1.6.2关键字typename与关键字class 34

1.7模板库简介 35

1.7.1 C语言和STL的演变历史 35

1.7.2 STL的组件 36

1.7.3 STL基本结构 37

1.7.4 STL编程概述 40

1.7.5小结 43

1.8本章小结 43

第2章 C++中的字符串 44

2.1字符串库简述 44

2.2字符的特点 46

2.3字符串类模板(basic_string模板类) 46

2.4字符串操作的通用函数 48

2.4.1构造器和析构器 48

2.4.2大小和容量 50

2.4.3元素存取(访问) 51

2.4.4字符串比较 52

2.4.5字符串内容修改和替换 55

2.4.6字符串联接 62

2.4.7字符串I/O操作 63

2.4.8字符串搜索 64

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

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

2.5本章小结 70

第3章 容器 71

3.1容器的概念 71

3.1.1容器成员和函数 72

3.1.2容器的种类和数据结构 72

3.2序列式容器概述 74

3.3序列式容器——vector类模板 75

3.3.1 vector类基础 75

3.3.2 vector类的成员函数 79

3.3.3 vector高级编程 84

3.4序列式容器——list类模板 93

3.4.1 list的定义和容量 94

3.4.2 list容器基础成员函数 100

3.4.3运算符函数 105

3.4.4其他重要成员函数 107

3.5序列式容器——deque(双端队列)类模板 113

3.5.1容器deque和容器vector的对比 114

3.5.2容器deque的定义和容量 114

3.5.3 deque容器基础成员函数 116

3.5.4 deque容器的高级编程 119

3.5.5 deque的模板函数 122

3.6关联式容器概述 122

3.7关联式容器——set/multiset类模板 123

3.7.1集合set的定义 123

3.7.2 set和multiset的容量、搜寻和统计 126

3.7.3 set和multiset的迭代器相关函数和赋值函数 129

3.7.4 set和multiset的插入和移除 131

3.7.5 set和multiset的比较运算符 133

3.8关联式容器——map/multimap类模板 135

3.8.1 map和multimap基础 136

3.8.2 map和multimap成员函数 140

3.8.3 map和multimap的高级编程 143

3.9特殊容器用法 152

3.9.1 bitset类模板 152

3.9.2 stack类模板 156

3.9.3队列queue类模板 157

3.9.4 Priority Queues类模板 161

3.10本章小结 163

第4章 C++中的算法 164

4.1算法库简介 164

4.2非修改性序列算法 165

4.2.1 for each算法 165

4.2.2元素计数 169

4.2.3最大最小值 171

4.2.4搜寻元素 173

4.2.5比较 183

4.3变动性算法 187

4.3.1复制 188

4.3.2转换 190

4.3.3互换 194

4.3.4赋值 195

4.3.5替换 197

4.3.6逆转 198

4.3.7旋转 200

4.3.8排列 201

4.4排序及相关操作 206

4.4.1全部元素排序 206

4.4.2局部排序 208

4.4.3根据某个元素排序 211

4.4.4堆(Heap)操作 212

4.4.5合并排序 215

4.4.6搜索 218

4.5删除算法 221

4.6本章小结 224

第5章 迭代器(Iterator) 225

5.1迭代器及其特性 225

5.2头文件﹤iterator﹥简述 226

5.3迭代器类型详述 226

5.3.1输入型迭代器 226

5.3.2输出型迭代器 227

5.3.3前向迭代器 227

5.3.4双向迭代器 228

5.3.5随机存取迭代器 228

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

5.4迭代器配接器 229

5.4.1逆向迭代器 229

5.4.2插入型迭代器 231

5.4.3流迭代器 233

5.5迭代器辅助函数 236

5.5.1 advance()迭代器前进函数 237

5.5.2 distance()迭代器距离 238

5.5.3 iter_swap()交换两个迭代器所指内容 239

5.6本章小结 240

第6章 STL的数值计算 241

6.1复数运算 241

6.1.1最简单的复数运算例题 241

6.1.2复数成员函数 242

6.1.3复数运算符 243

6.1.4复数运算 243

6.1.5复数的超越函数 246

6.2数组(向量)运算 249

6.2.1类valarray 249

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

6.2.3类gslice和类模板gslice_array 259

6.2.4类mask_array 262

6.2.5类indirect_array 263

6.3通用数值计算 265

6.3.1求和(accumulate) 265

6.3.2内积(inner_product) 266

6.3.3部分和(partial_sum) 268

6.3.4序列相邻差(adjacent difference) 270

6.4全局性数学函数 272

6.5本章小结 274

第7章 输入输出流 275

7.1 IOStream简介 275

7.1.1 Stream对象 276

7.1.2 Stream类别 276

7.1.3 Stream操作符 277

7.1.4操控器(Manipulators) 278

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

7.2.1头文件 278

7.2.2标准Stream操作符 278

7.2.3 Stream状态 282

7.2.4标准输入和输出函数 286

7.3格式化 291

7.3.1格式标志 291

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

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

7.3.4正记号与大写字符 296

7.3.5数值进制 297

7.3.6浮点数输出 298

7.3.7一般性格式定义 300

7.4 StreamBuffer类介绍 300

7.4.1 Stream缓冲区 301

7.4.2缓冲区迭代器 302

7.4.3自定义缓冲区 304

7.5基于字符串的流 311

7.5.1 streambuf类 311

7.5.2类模板basic_istringstream 312

7.5.3类模板basic_ostringstream 313

7.5.4类模板basic_stringstream 314

7.6基于文件的流 314

7.6.1文件标志及其使用 315

7.6.2随机存取 325

7.6.3 4个类模板简介 329

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

7.7本章小结 333

第8章 异常处理 334

8.1异常概念和基本思想 334

8.1.1异常的概念 334

8.1.2异常的分类 335

8.1.3异常的捕捉和处理 338

8.1.4资源管理 339

8.1.5异常和效率 342

8.1.6异常的描述 343

8.1.7未捕捉的异常 346

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

8.2.1类exception 347

8.2.2调用abort() 353

8.2.3堆栈解退 355

8.2.4错误代码 356

8.2.5异常的迷失 356

8.2.6异常处理的局限性 360

8.3处理异常详述 362

8.3.1异常处理的实现机制 362

8.3.2异常处理语句的语法 363

8.3.3异常处理不唤醒 364

8.3.4函数声明 364

8.3.5使用异常 364

8.4异常的特殊处理函数 365

8.5本章小结 366

第9章 通用工具 368

9.1通用工具库简介 368

9.1.1相等比较 368

9.1.2小于比较 369

9.1.3复制构造 371

9.1.4默认构造 371

9.1.5配置器要求 371

9.1.6运算符 373

9.1.7对组(pairs) 374

9.2动态内存管理 379

9.2.1默认配置器 379

9.2.2 raw storage iterator 381

9.2.3 temporary buffers(临时缓冲区) 382

9.2.4特定算法 382

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

9.3堆的内存分配 383

9.3.1 new和delete运算符 383

9.3.2分配固定维数的数组 384

9.3.3分配动态内存数组 385

9.3.4处理堆耗尽 386

9.4辅助功能 386

9.4.1数值极限 386

9.4.2较大较小值(最大最小值) 389

9.4.3两值交换 390

9.4.4辅助性比较 392

9.4.5头文件cstdlib和cstddef简介 393

9.5日期和时间 394

9.5.1 3个类型 394

9.5.2结构体tm 394

9.5.3相关时间函数 395

9.5.4时间示例 398

9.6模板类auto_ptr 400

9.6.1 auto_ptr类构造函数 401

9.6.2类auto_ptr的成员及转换 401

9.6.3使用auto_ptr类 402

9.7本章小结 405

第10章 语言支持 406

10.1类型 406

10.2执行属性 407

10.2.1类模板numeric_limits及其成员 407

10.2.2 float round_style和float_denorm_style 410

10.2.3数值极限的特化 410

10.2.4库函数 411

10.2.5应用举例 412

10.3程序的启动和终止 419

10.4动态内存管理 420

10.4.1内存的分配和释放 420

10.4.2内存分配错误 423

10.4.3应用举例 424

10.5类型标识符 426

10.5.1类type_info 426

10.5.2类bad_cast 427

10.5.3类bad_typeid 428

10.5.4操作符typeid 428

10.5.5操作符dynamic_cast 429

10.5.6应用举例 429

10.6异常处理 431

10.6.1异常类(class exception) 431

10.6.2 violating exception-specifications 432

10.6.3 abnormal termination 433

10.6.4未捕获异常(uncaught exception) 434

10.6.5应用举例 434

10.7其他运行支持 436

10.7.1概述 436

10.7.2应用举例 438

10.8本章小结 441

第11章 检测库详解 442

11.1异常类Exception 442

11.1.1 logic_error类 442

11.1.2 domain_error类 443

11.1.3 invali_argument类 444

11.1.4 length_error类 445

11.1.5 out_of_range类 447

11.1.6 runtime_error类 448

11.1.7 range_error类 449

11.1.8 overflow_error类 450

11.1.9 underflow_error(下溢出)类 451

11.2 assertions(断言) 452

11.3错误编码 454

11.4本章小结 456

第12章 国际化库详解 458

12.1国际化元素 458

12.2多种字符编码 458

12.2.1宽字符和多字节文本 459

12.2.2字符特性 459

12.2.3特殊字符国际化 461

12.3类locale 462

12.3.1类locale概述 462

12.3.2类locale的facet 465

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

12.3.4流和区域 472

12.3.5刻面的处理 473

12.4标准locale的分类 475

12.4.1 ctype类 475

12.4.2数值类的locale类 491

12.4.3刻面numeric punctuation 498

12.4.4 collate类 501

12.4.5 time类(category) 504

12.4.6 C库locale 510

12.5本章小结 511

第13章 仿函数 512

13.1仿函数的概述 512

13.1.1仿函数的概念 512

13.1.2仿函数的作用 514

13.2预定义仿函数 521

13.3辅助用仿函数 522

13.3.1一元组合函数配接器 523

13.3.2二元组合函数配接器 525

13.4关系仿函数 526

13.4.1等于(equal_to﹤type﹥()) 527

13.4.2不等于(not_equal_to﹤type﹥()) 528

13.4.3小于(less﹤type﹥()) 529

13.4.4大于(greater﹤type﹥()) 529

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

13.5逻辑仿函数 530

13.5.1谓词 531

13.5.2逻辑仿函数 532

13.6算术仿函数 537

13.6.1加减乘除运算仿函数(plus) 537

13.6.2“求余”仿函数和“求反”仿函数 539

13.7其他类型的仿函数 540

13.7.1证和映射 541

13.7.2仿函数hash和subtractive_mg 543

13.8适配器 544

13.8.1成员函数适配器 545

13.8.2其他适配器 551

13.9本章小结 560

第14章 配置器 561

14.1使用配置器 561

14.2 C++标准程序库的默认配置器(标准配置器) 563

14.3自定义配置器 565

14.4配置类的详细讨论 565

14.4.1型别 565

14.4.2配置类的成员函数 565

14.4.3广义配置器 566

14.4.4动态存储 567

14.4.5 C风格的分配 567

14.5未初始化的内存 568

14.6配置器举例 570

14.7本章小结 571

参考文献 572