注重体验与质量的电子书资源下载网站
分类于: 人工智能 互联网
简介
写给大忙人看的C++ 豆 0.0分
资源最后更新于 2020-11-26 04:13:48
作者:【美】Brian Overland(布莱恩.奥弗兰德)
译者:卢涛
出版社:电子工业出版社
出版日期:2015-01
ISBN:9787121268618
文件格式: pdf
简介· · · · · ·
《写给大忙人看的C++》全面介绍了C++语言知识,既提供了学习C++语言最新功能的捷径,也为快速找到特定问题的答案提供了便利。《写给大忙人看的C++》简明地描述了C++核心语言和标准库中几乎所有的函数、对象和运算符,一目了然地显示了语法、结构和重要函数的信息,内容组织形式便于快速查找信息。《写给大忙人看的C++》精选了实用的例子来深入地讲解概念,还提供了富有挑战性的练习及参考答案,便于读者举一反三,巩固所学的知识。《写给大忙人看的C++》涵盖了C++11的新特性,包括:lambda表达式、右值引用、正则表达式库、随机库、散列表容器、智能指针等。
《写给大忙人看的C++》既适合需要快速了解C++的初学者,也适合想要了解C++11的新特性的有C++编程经验的高级程序员,还可作为开发人员工作中的C++综合参考。
目录
第1章 C++基础 1
1.1 组成C++程序的元素 1
1.1.1 #include指令 2
1.1.2 using语句 2
1.1.3 main函数 3
1.2 处理“闪烁的控制台一闪而过” 4
1.3 使用Microsoft Visual Studio 4
1.4 使用C++执行更多的操作 5
1.5 添加简单的变量声明 7
1.6 介绍C++控制结构 9
1.6.1 使用“if”做判断 9
1.6.2 使用“while”循环 11
1.7 C++程序的一般结构 12
1.8 关于命名空间的更多内容 13
1.9 关于注释的一些解释 15
1.9.1 C++注释(行注释) 15
1.9.2 C语言风格的注释 15
1.10 示例应用程序:加法机 16
练习 17
1.11 示例应用程序:计算phi 18
练习 20
第2章 数据 21
2.1 声明简单变量 22
2.2 基本数据类型 23
2.2.1 整数类型:准则 24
2.2.2 浮点类型:准则 25
2.3 符号名(符号) 25
2.4 字面量 26
2.5 混合数值类型 29
2.5.1 整数与浮点数 29
2.5.2 布尔型与整型 30
2.5.3 有符号整数与无符号整数 30
2.6 字符串和字符字面量 33
2.6.1 单引号字符 33
2.6.2 双引号字符串 34
2.6.3 特殊字符(转义序列) 36
2.6.4 宽字符串 39
2.6.5 原始字符串字面量(C++11) 40
2.7 数据声明:完整的语法 40
2.8 枚举类型 43
2.9 特殊声明(typedef、auto、decltype) 45
2.9.1 typedef关键字 45
2.9.2 auto和decltype关键字(C++11) 46
2.10 示例应用程序:类型提升 47
练习 48
第3章 运算符 49
3.1 优先级、结合性及左值 49
3.1.1 优先级 49
3.1.2 结合性 50
3.1.3 左值 50
3.2 运算符的简明概述 51
3.3 运算符的详细信息 53
3.3.1 范围运算符 53
3.3.2 数据访问及其他高优先级的运算符 54
3.3.3 前缀运算符 55
3.3.4 指向成员的指针运算符 58
3.3.5 乘法和除法 59
3.3.6 加法和减法 60
3.3.7 移位运算符 60
3.3.8 小于和大于 61
3.3.9 测试相等 62
3.3.10 位运算和逻辑连词 63
3.3.11 条件运算符 64
3.3.12 赋值运算符 64
3.3.13 throw运算符 67
3.3.14 连接运算符 67
3.4 善恶之争:后缀或前缀 67
3.5 位运算符的详细信息 68
3.5.1 按位与、或、异或 68
3.5.2 对有符号数和无符号数的操作 69
3.5.3 按位移位 71
3.6 类型转换运算符 71
3.6.1 static_cast运算符 72
3.6.2 reinterpret_cast运算符 73
3.6.3 const_cast运算符 74
3.6.4 dynamic_cast运算符 75
3.6.5 C语言的类型转换 76
3.7 示例应用程序:打印输出二进制基数 76
练习 78
第4章 控制结构 80
4.1 C++语句的简明概述 80
4.2 空语句和表达式语句 82
4.3 复合语句 83
4.4 if和if-else语句 84
4.5 while和do-while语句 86
4.6 for语句 87
4.7 基于范围的for语句(C++11) 89
4.8 switch语句 90
4.9 跳转语句(break、continue、goto) 92
4.10 异常处理(try、catch) 94
4.10.1 什么是异常 94
4.10.2 try-catch代码块:常规语法 95
4.10.3 catch块和异常对象 96
4.10.4 抛出一个异常 97
4.11 示例应用程序:猜数字游戏 98
练习 99
4.12 示例应用程序:计算机猜数字 100
练习 102
第5章 函数 103
5.1 传统的(命名)函数概述 103
5.1.1 函数原型与定义 104
5.1.2 原型化一个函数(简化的语法) 105
5.1.3 定义函数 105
5.1.4 调用函数 107
5.2 局部和全局变量 107
5.3 完整的函数声明语法 109
5.4 函数重载 111
5.5 带有默认值的参数 112
5.6 可变长度参数列表 113
5.7 lambda函数或匿名函数(C++11) 115
5.7.1 lambda函数的基本语法 116
5.7.2 lambda函数的闭包语法 117
5.7.3 mutable关键字 120
5.7.4 将lambda表达式与STL连用 120
5.7.5 存储和返回lambda函数 122
5.8 constexpr函数(C++11) 124
5.9 示例应用程序:骰子的概率 125
练习 127
第6章 指针、数组和引用 129
6.1 引用 129
6.1.1 引用参数 129
6.1.2 从函数中返回一个引用 132
6.1.3 用“const”修饰的引用 132
6.2 数组 133
6.2.1 简单的(一维)数组 134
6.2.2 数组处理与循环 135
6.2.3 向函数传递数组 136
6.2.4 多维数组 137
6.3 指针 139
6.3.1 指针的概念 139
6.3.2 将指针作为参数 141
6.3.3 用于访问数组的指针 142
6.3.4 指针运算 145
6.3.5 指针与数组参数 145
6.3.6 指针和内存分配 146
6.3.7 指向const类型的指针 148
6.3.8 对指针本身应用const 150
6.3.9 void指针(void *) 151
6.4 涉及指针的复合声明 152
6.5 传递和返回函数指针 155
6.6 智能指针(C++11) 156
6.6.1 shared_ptr模板 157
6.6.2 unique_ptr模板 160
6.7 示例应用程序:埃拉托色尼筛 162
练习 163
第7章 类与对象 165
7.1 概述:结构、联合和类 165
7.2 基本的类声明语法 166
7.2.1 声明和使用一个类 167
7.2.2 数据成员访问(公有、私有、保护) 168
7.2.3 定义成员函数 170
7.2.4 调用成员函数 173
7.2.5 私有成员函数 175
7.2.6 包含类的类 175
7.2.7 静态成员 177
7.3 构造函数 179
7.3.1 默认构造函数 180
7.3.2 重载的构造函数和转换函数 182
7.3.3 复制构造函数 183
7.3.4 构造函数初始化列表 184
7.3.5 委托构造函数(C++11) 187
7.3.6 默认成员初始化(C++11) 188
7.4 析构函数 188
7.5 隐藏的this指针 189
7.6 运算符函数(运算符重载) 190
7.6.1 将运算符函数作为成员 191
7.6.2 作为友元的运算符函数 192
7.6.3 赋值运算符 194
7.6.4 函数调用运算符 195
7.6.5 下标运算符 196
7.6.6 递增运算符和递减运算符 197
7.6.7 传入和传出转换函数 198
7.7 派生类(子类化) 199
7.7.1 子类语法 200
7.7.2 基类访问说明 201
7.7.3 继承的构造函数(C++11) 202
7.7.4 向上强制类型转换:子对象和基类指针 203
7.7.5 虚函数和重载 205
7.7.6 纯虚函数 207
7.7.7 override关键字(C++11) 207
7.7.8 解决层次结构中的名字冲突 208
7.8 位字段 209
7.9 联合 211
7.9.1 命名联合 211
7.9.2 匿名联合 213
7.10 示例应用程序:打包的布尔 213
演习 216
第8章 预处理器指令 217
8.1 预处理器指令的常规语法 217
8.2 预处理器指令小结 218
8.3 使用指令来解决具体问题 221
8.3.1 用#define创建有意义的符号 221
8.3.2 用#define创建宏 223
8.3.3 条件编译(#if、#endif等) 224
8.4 预处理器运算符 226
8.5 预定义宏 227
8.6 创建项目头文件 229
第9章 创建和使用模板 231
9.1 模板:语法和概述 231
9.2 函数模板 233
9.2.1 单参数的函数模板 233
9.2.2 处理类型歧义 235
9.2.3 有两个参数的函数模板 235
9.3 类模板 237
9.3.1 简单的类模板 238
9.3.2 实例化类模板 239
9.4 类模板与成员函数 240
9.4.1 类模板与内联成员函数 240
9.4.2 具有独立函数定义的类模板 241
9.5 使用整型模板参数 242
9.6 模板专门化 243
9.7 可变参数模板(C++11) 245
9.7.1 更复杂的可变模板 247
9.7.2 可变参数模板规则概述 248
9.7.3 元组 249
9.8 示例应用程序:类型提升 250
练习 251
第10章 C-字符串库函数 252
10.1 C-字符串格式概述 252
10.2 使用C-字符串输入和输出 254
10.3 C-字符串函数 255
10.4 用strtok对字符串标记化 260
10.5 单字符函数 261
10.6 内存块函数(memcpy等) 264
10.7 宽字符函数(wstrcpy等) 266
第11章 C I/O库函数 268
11.1 C I/O库概述 268
11.2 控制台I/O函数 269
11.3 打印/扫描格式 272
11.3.1 printf格式说明符(%) 272
11.3.2 高级printf格式的语法 274
11.3.3 将格式说明符与scanf函数配合使用 276
11.4 输入和输出字符串 278
11.5 文件I/O 279
11.5.1 打开文件 280
11.5.2 关闭文件 282
11.5.3 读取和写入文本文件 282
11.5.4 读写二进制文件 284
11.5.5 随机访问函数 286
11.5.6 其他文件管理函数 287
第12章 数学、时间和其他库函数 289
12.1 三角函数 290
12.2 其他数学函数 292
12.3 C语言的日期和时间库 294
12.3.1 日期和时间函数 295
12.3.2 TM(“Time”)数据结构 298
12.3.3 日期/时间格式说明符(strftime) 299
12.4 从字符串到数字的转换 302
12.5 内存分配函数 304
12.6 标准C随机函数 305
12.7 查找和排序函数 306
12.7.1 bsearch函数(二分查找) 307
12.7.2 qsort函数(快速排序) 308
12.7.3 使用C字符串的比较函数 310
12.8 其他标准C库函数 310
12.9 示例应用程序:智障学者 312
练习 314
第13章 C++的I/O流类 315
13.1 C++的I/O流的基础知识 315
13.1.1 用“<<”写入输出 316
13.1.2 用“>>”读取输入 316
13.2 利用getline读取输入行 318
13.3 C++流类的层次结构 319
13.4 流对象:控制符及标志 321
13.4.1 流控制符 322
13.4.2 流格式标志 329
13.5 流成员函数(通用) 331
13.5.1 输入流函数 331
13.5.2 输出流函数 333
13.5.3 标记设置流函数 334
13.6 文件流操作 337
13.6.1 概述:文本与二进制文件I/O 337
13.6.2 创建一个文件对象 338
13.6.3 文件的特定成员函数 341
13.6.4 读写二进制模式 342
13.6.5 随机存取操作 343
13.7 读取和写入字符串流 345
13.8 为你的类重载移位运算符 348
13.9 示例应用程序:文本文件阅读器 350
练习 351
第14章 C++ STL string类 352
14.1 string类概述 352
14.2 string类的构造函数 353
14.3 字符串类运算符 355
14.3.1 字符串赋值 355
14.3.2 字符串连接 355
14.3.3 字符串比较 356
14.3.4 字符串索引 357
14.4 成员函数概述 358
14.5 成员函数详解 359
14.6 string类的迭代器 372
14.6.1 标准(正向)迭代器 372
14.6.2 反向迭代器 374
14.6.3 迭代算法 375
14.6.4 使用迭代器的成员函数 375
14.7 宽字符串类(basic_string) 377
第15章 STL(向量,双端队列)简介 378
15.1 容器模板简介 378
15.2 介绍迭代器 380
15.3 向量模板 381
15.3.1 向量迭代器 382
15.3.2 向量构造函数 384
15.3.3 列表初始化(C++11) 385
15.3.4 向量函数简明摘要 385
15.3.5 向量成员函数详解 385
15.4 双端队列模板 392
15.4.1 双端队列迭代器 394
15.4.2 双端队列构造函数 394
15.4.3 双端队列函数简介 395
15.4.4 双端队列函数详解 396
15.5 位集合模板 402
15.5.1 位集合构造函数 403
15.5.2 位集合成员函数 403
15.6 示例应用程序:字母文本文件管理 405
练习 407
第16章 STL序列容器(List) 408
16.1 排序元素(严格弱序) 408
16.2 列表模板 409
16.2.1 列表迭代器 410
16.2.2 列表构造函数 412
16.2.3 列表函数简明摘要 413
16.2.4 列表成员函数详解 414
16.3 栈模板 423
16.4 队列模板 426
16.5 优先队列模板 428
16.5.1 优先队列构造函数 430
16.5.2 优先队列成员函数 431
16.6 示例应用程序:找出中位数 432
演习 433
第17章 STL关联容器(map、set) 435
17.1 pair模板 435
17.2 映射模板 437
17.2.1 填充映射 438
17.2.2 查找现有映射的元素 440
17.2.3 一个更复杂的记录类型 441
17.2.4 遍历映射 445
17.2.5 映射实现:二叉树 445
17.2.6 映射构造函数 447
17.2.7 映射函数简明摘要 448
17.2.8 映射成员函数详解 449
17.3 集合模板 455
17.3.1 填充集合 456
17.3.2 查找集合中的一个元素 457
17.3.3 集合构造函数 457
17.3.4 集合函数简明摘要 459
17.3.5 集合成员函数详解 460
17.4 多重映射模板 465
17.5 多重集合模板 467
17.6 无序容器(C++11) 469
17.6.1 无序容器:基本概念 469
17.6.2 调优散列表的性能 473
17.6.3 编写你自己的散列和相等函数 475
17.7 示例应用程序:猜单词游戏 477
练习 479
第18章 STL算法 480
18.1 STL算法:基本概念 480
18.2 使用lambda函数(C++11) 482
18.3 算法和迭代器 484
18.4 插入迭代器 485
18.5 示例应用程序:寻找中位数 486
18.6 算法简明摘要 487
18.6.1 只读算法 488
18.6.2 修改算法 489
18.6.3 排序和重新排序算法 489
18.6.4 堆算法 490
18.6.5 数值算法 492
18.6.6 预定义的函数对象 492
18.7 算法详解 494
第19章 C++11的随机化库 527
19.1 随机化中的问题 527
19.1.1 有偏差的分布问题 527
19.1.2 伪随机序列的问题 528
19.1.3 获取种子的问题 528
19.2 一个更好的随机化方案 529
19.3 常见的引擎 531
19.4 常用的分布 532
19.5 对引擎的操作 535
19.6 对分布的操作 536
19.7 示例应用程序:骰子游戏 537
练习 539
第20章 C++11的正则表达式库 540
20.1 C++11的正则表达式概述 540
20.2 处理转义序列(\) 543
20.3 构造一个正则表达式字符串 544
20.3.1 匹配字符 544
20.3.2 模式修饰符 547
20.3.3 重复组 548
20.3.4 字符类 549
20.4 匹配和查找函数 550
20.5 “查找全部”或迭代查找 552
20.6 替换文本 553
20.7 字符串标记化 555
20.8 捕获正则表达式异常 556
20.9 示例应用程序:RPN计算器 557
练习 559
附录A 对右值引用(C++11)的轻松介绍 561
A.1 复制的麻烦 561
A.2 移动语义:C++11来救援 564
A.3 在用户的String类中的右值引用 566
A.4 验证运行时性能的提高 568
A.5 右值和包含的对象 569
A.6 引用:右值和左值再思考 570
附录B C++11新功能概述 572
B.1 对象结构改进 572
B.2 其他核心语言增强功能 573
B.3 其他新关键字 574
B.4 标准库的扩展 574
附录C ASCII码 576
1.1 组成C++程序的元素 1
1.1.1 #include指令 2
1.1.2 using语句 2
1.1.3 main函数 3
1.2 处理“闪烁的控制台一闪而过” 4
1.3 使用Microsoft Visual Studio 4
1.4 使用C++执行更多的操作 5
1.5 添加简单的变量声明 7
1.6 介绍C++控制结构 9
1.6.1 使用“if”做判断 9
1.6.2 使用“while”循环 11
1.7 C++程序的一般结构 12
1.8 关于命名空间的更多内容 13
1.9 关于注释的一些解释 15
1.9.1 C++注释(行注释) 15
1.9.2 C语言风格的注释 15
1.10 示例应用程序:加法机 16
练习 17
1.11 示例应用程序:计算phi 18
练习 20
第2章 数据 21
2.1 声明简单变量 22
2.2 基本数据类型 23
2.2.1 整数类型:准则 24
2.2.2 浮点类型:准则 25
2.3 符号名(符号) 25
2.4 字面量 26
2.5 混合数值类型 29
2.5.1 整数与浮点数 29
2.5.2 布尔型与整型 30
2.5.3 有符号整数与无符号整数 30
2.6 字符串和字符字面量 33
2.6.1 单引号字符 33
2.6.2 双引号字符串 34
2.6.3 特殊字符(转义序列) 36
2.6.4 宽字符串 39
2.6.5 原始字符串字面量(C++11) 40
2.7 数据声明:完整的语法 40
2.8 枚举类型 43
2.9 特殊声明(typedef、auto、decltype) 45
2.9.1 typedef关键字 45
2.9.2 auto和decltype关键字(C++11) 46
2.10 示例应用程序:类型提升 47
练习 48
第3章 运算符 49
3.1 优先级、结合性及左值 49
3.1.1 优先级 49
3.1.2 结合性 50
3.1.3 左值 50
3.2 运算符的简明概述 51
3.3 运算符的详细信息 53
3.3.1 范围运算符 53
3.3.2 数据访问及其他高优先级的运算符 54
3.3.3 前缀运算符 55
3.3.4 指向成员的指针运算符 58
3.3.5 乘法和除法 59
3.3.6 加法和减法 60
3.3.7 移位运算符 60
3.3.8 小于和大于 61
3.3.9 测试相等 62
3.3.10 位运算和逻辑连词 63
3.3.11 条件运算符 64
3.3.12 赋值运算符 64
3.3.13 throw运算符 67
3.3.14 连接运算符 67
3.4 善恶之争:后缀或前缀 67
3.5 位运算符的详细信息 68
3.5.1 按位与、或、异或 68
3.5.2 对有符号数和无符号数的操作 69
3.5.3 按位移位 71
3.6 类型转换运算符 71
3.6.1 static_cast运算符 72
3.6.2 reinterpret_cast运算符 73
3.6.3 const_cast运算符 74
3.6.4 dynamic_cast运算符 75
3.6.5 C语言的类型转换 76
3.7 示例应用程序:打印输出二进制基数 76
练习 78
第4章 控制结构 80
4.1 C++语句的简明概述 80
4.2 空语句和表达式语句 82
4.3 复合语句 83
4.4 if和if-else语句 84
4.5 while和do-while语句 86
4.6 for语句 87
4.7 基于范围的for语句(C++11) 89
4.8 switch语句 90
4.9 跳转语句(break、continue、goto) 92
4.10 异常处理(try、catch) 94
4.10.1 什么是异常 94
4.10.2 try-catch代码块:常规语法 95
4.10.3 catch块和异常对象 96
4.10.4 抛出一个异常 97
4.11 示例应用程序:猜数字游戏 98
练习 99
4.12 示例应用程序:计算机猜数字 100
练习 102
第5章 函数 103
5.1 传统的(命名)函数概述 103
5.1.1 函数原型与定义 104
5.1.2 原型化一个函数(简化的语法) 105
5.1.3 定义函数 105
5.1.4 调用函数 107
5.2 局部和全局变量 107
5.3 完整的函数声明语法 109
5.4 函数重载 111
5.5 带有默认值的参数 112
5.6 可变长度参数列表 113
5.7 lambda函数或匿名函数(C++11) 115
5.7.1 lambda函数的基本语法 116
5.7.2 lambda函数的闭包语法 117
5.7.3 mutable关键字 120
5.7.4 将lambda表达式与STL连用 120
5.7.5 存储和返回lambda函数 122
5.8 constexpr函数(C++11) 124
5.9 示例应用程序:骰子的概率 125
练习 127
第6章 指针、数组和引用 129
6.1 引用 129
6.1.1 引用参数 129
6.1.2 从函数中返回一个引用 132
6.1.3 用“const”修饰的引用 132
6.2 数组 133
6.2.1 简单的(一维)数组 134
6.2.2 数组处理与循环 135
6.2.3 向函数传递数组 136
6.2.4 多维数组 137
6.3 指针 139
6.3.1 指针的概念 139
6.3.2 将指针作为参数 141
6.3.3 用于访问数组的指针 142
6.3.4 指针运算 145
6.3.5 指针与数组参数 145
6.3.6 指针和内存分配 146
6.3.7 指向const类型的指针 148
6.3.8 对指针本身应用const 150
6.3.9 void指针(void *) 151
6.4 涉及指针的复合声明 152
6.5 传递和返回函数指针 155
6.6 智能指针(C++11) 156
6.6.1 shared_ptr模板 157
6.6.2 unique_ptr模板 160
6.7 示例应用程序:埃拉托色尼筛 162
练习 163
第7章 类与对象 165
7.1 概述:结构、联合和类 165
7.2 基本的类声明语法 166
7.2.1 声明和使用一个类 167
7.2.2 数据成员访问(公有、私有、保护) 168
7.2.3 定义成员函数 170
7.2.4 调用成员函数 173
7.2.5 私有成员函数 175
7.2.6 包含类的类 175
7.2.7 静态成员 177
7.3 构造函数 179
7.3.1 默认构造函数 180
7.3.2 重载的构造函数和转换函数 182
7.3.3 复制构造函数 183
7.3.4 构造函数初始化列表 184
7.3.5 委托构造函数(C++11) 187
7.3.6 默认成员初始化(C++11) 188
7.4 析构函数 188
7.5 隐藏的this指针 189
7.6 运算符函数(运算符重载) 190
7.6.1 将运算符函数作为成员 191
7.6.2 作为友元的运算符函数 192
7.6.3 赋值运算符 194
7.6.4 函数调用运算符 195
7.6.5 下标运算符 196
7.6.6 递增运算符和递减运算符 197
7.6.7 传入和传出转换函数 198
7.7 派生类(子类化) 199
7.7.1 子类语法 200
7.7.2 基类访问说明 201
7.7.3 继承的构造函数(C++11) 202
7.7.4 向上强制类型转换:子对象和基类指针 203
7.7.5 虚函数和重载 205
7.7.6 纯虚函数 207
7.7.7 override关键字(C++11) 207
7.7.8 解决层次结构中的名字冲突 208
7.8 位字段 209
7.9 联合 211
7.9.1 命名联合 211
7.9.2 匿名联合 213
7.10 示例应用程序:打包的布尔 213
演习 216
第8章 预处理器指令 217
8.1 预处理器指令的常规语法 217
8.2 预处理器指令小结 218
8.3 使用指令来解决具体问题 221
8.3.1 用#define创建有意义的符号 221
8.3.2 用#define创建宏 223
8.3.3 条件编译(#if、#endif等) 224
8.4 预处理器运算符 226
8.5 预定义宏 227
8.6 创建项目头文件 229
第9章 创建和使用模板 231
9.1 模板:语法和概述 231
9.2 函数模板 233
9.2.1 单参数的函数模板 233
9.2.2 处理类型歧义 235
9.2.3 有两个参数的函数模板 235
9.3 类模板 237
9.3.1 简单的类模板 238
9.3.2 实例化类模板 239
9.4 类模板与成员函数 240
9.4.1 类模板与内联成员函数 240
9.4.2 具有独立函数定义的类模板 241
9.5 使用整型模板参数 242
9.6 模板专门化 243
9.7 可变参数模板(C++11) 245
9.7.1 更复杂的可变模板 247
9.7.2 可变参数模板规则概述 248
9.7.3 元组 249
9.8 示例应用程序:类型提升 250
练习 251
第10章 C-字符串库函数 252
10.1 C-字符串格式概述 252
10.2 使用C-字符串输入和输出 254
10.3 C-字符串函数 255
10.4 用strtok对字符串标记化 260
10.5 单字符函数 261
10.6 内存块函数(memcpy等) 264
10.7 宽字符函数(wstrcpy等) 266
第11章 C I/O库函数 268
11.1 C I/O库概述 268
11.2 控制台I/O函数 269
11.3 打印/扫描格式 272
11.3.1 printf格式说明符(%) 272
11.3.2 高级printf格式的语法 274
11.3.3 将格式说明符与scanf函数配合使用 276
11.4 输入和输出字符串 278
11.5 文件I/O 279
11.5.1 打开文件 280
11.5.2 关闭文件 282
11.5.3 读取和写入文本文件 282
11.5.4 读写二进制文件 284
11.5.5 随机访问函数 286
11.5.6 其他文件管理函数 287
第12章 数学、时间和其他库函数 289
12.1 三角函数 290
12.2 其他数学函数 292
12.3 C语言的日期和时间库 294
12.3.1 日期和时间函数 295
12.3.2 TM(“Time”)数据结构 298
12.3.3 日期/时间格式说明符(strftime) 299
12.4 从字符串到数字的转换 302
12.5 内存分配函数 304
12.6 标准C随机函数 305
12.7 查找和排序函数 306
12.7.1 bsearch函数(二分查找) 307
12.7.2 qsort函数(快速排序) 308
12.7.3 使用C字符串的比较函数 310
12.8 其他标准C库函数 310
12.9 示例应用程序:智障学者 312
练习 314
第13章 C++的I/O流类 315
13.1 C++的I/O流的基础知识 315
13.1.1 用“<<”写入输出 316
13.1.2 用“>>”读取输入 316
13.2 利用getline读取输入行 318
13.3 C++流类的层次结构 319
13.4 流对象:控制符及标志 321
13.4.1 流控制符 322
13.4.2 流格式标志 329
13.5 流成员函数(通用) 331
13.5.1 输入流函数 331
13.5.2 输出流函数 333
13.5.3 标记设置流函数 334
13.6 文件流操作 337
13.6.1 概述:文本与二进制文件I/O 337
13.6.2 创建一个文件对象 338
13.6.3 文件的特定成员函数 341
13.6.4 读写二进制模式 342
13.6.5 随机存取操作 343
13.7 读取和写入字符串流 345
13.8 为你的类重载移位运算符 348
13.9 示例应用程序:文本文件阅读器 350
练习 351
第14章 C++ STL string类 352
14.1 string类概述 352
14.2 string类的构造函数 353
14.3 字符串类运算符 355
14.3.1 字符串赋值 355
14.3.2 字符串连接 355
14.3.3 字符串比较 356
14.3.4 字符串索引 357
14.4 成员函数概述 358
14.5 成员函数详解 359
14.6 string类的迭代器 372
14.6.1 标准(正向)迭代器 372
14.6.2 反向迭代器 374
14.6.3 迭代算法 375
14.6.4 使用迭代器的成员函数 375
14.7 宽字符串类(basic_string) 377
第15章 STL(向量,双端队列)简介 378
15.1 容器模板简介 378
15.2 介绍迭代器 380
15.3 向量模板 381
15.3.1 向量迭代器 382
15.3.2 向量构造函数 384
15.3.3 列表初始化(C++11) 385
15.3.4 向量函数简明摘要 385
15.3.5 向量成员函数详解 385
15.4 双端队列模板 392
15.4.1 双端队列迭代器 394
15.4.2 双端队列构造函数 394
15.4.3 双端队列函数简介 395
15.4.4 双端队列函数详解 396
15.5 位集合模板 402
15.5.1 位集合构造函数 403
15.5.2 位集合成员函数 403
15.6 示例应用程序:字母文本文件管理 405
练习 407
第16章 STL序列容器(List) 408
16.1 排序元素(严格弱序) 408
16.2 列表模板 409
16.2.1 列表迭代器 410
16.2.2 列表构造函数 412
16.2.3 列表函数简明摘要 413
16.2.4 列表成员函数详解 414
16.3 栈模板 423
16.4 队列模板 426
16.5 优先队列模板 428
16.5.1 优先队列构造函数 430
16.5.2 优先队列成员函数 431
16.6 示例应用程序:找出中位数 432
演习 433
第17章 STL关联容器(map、set) 435
17.1 pair模板 435
17.2 映射模板 437
17.2.1 填充映射 438
17.2.2 查找现有映射的元素 440
17.2.3 一个更复杂的记录类型 441
17.2.4 遍历映射 445
17.2.5 映射实现:二叉树 445
17.2.6 映射构造函数 447
17.2.7 映射函数简明摘要 448
17.2.8 映射成员函数详解 449
17.3 集合模板 455
17.3.1 填充集合 456
17.3.2 查找集合中的一个元素 457
17.3.3 集合构造函数 457
17.3.4 集合函数简明摘要 459
17.3.5 集合成员函数详解 460
17.4 多重映射模板 465
17.5 多重集合模板 467
17.6 无序容器(C++11) 469
17.6.1 无序容器:基本概念 469
17.6.2 调优散列表的性能 473
17.6.3 编写你自己的散列和相等函数 475
17.7 示例应用程序:猜单词游戏 477
练习 479
第18章 STL算法 480
18.1 STL算法:基本概念 480
18.2 使用lambda函数(C++11) 482
18.3 算法和迭代器 484
18.4 插入迭代器 485
18.5 示例应用程序:寻找中位数 486
18.6 算法简明摘要 487
18.6.1 只读算法 488
18.6.2 修改算法 489
18.6.3 排序和重新排序算法 489
18.6.4 堆算法 490
18.6.5 数值算法 492
18.6.6 预定义的函数对象 492
18.7 算法详解 494
第19章 C++11的随机化库 527
19.1 随机化中的问题 527
19.1.1 有偏差的分布问题 527
19.1.2 伪随机序列的问题 528
19.1.3 获取种子的问题 528
19.2 一个更好的随机化方案 529
19.3 常见的引擎 531
19.4 常用的分布 532
19.5 对引擎的操作 535
19.6 对分布的操作 536
19.7 示例应用程序:骰子游戏 537
练习 539
第20章 C++11的正则表达式库 540
20.1 C++11的正则表达式概述 540
20.2 处理转义序列(\) 543
20.3 构造一个正则表达式字符串 544
20.3.1 匹配字符 544
20.3.2 模式修饰符 547
20.3.3 重复组 548
20.3.4 字符类 549
20.4 匹配和查找函数 550
20.5 “查找全部”或迭代查找 552
20.6 替换文本 553
20.7 字符串标记化 555
20.8 捕获正则表达式异常 556
20.9 示例应用程序:RPN计算器 557
练习 559
附录A 对右值引用(C++11)的轻松介绍 561
A.1 复制的麻烦 561
A.2 移动语义:C++11来救援 564
A.3 在用户的String类中的右值引用 566
A.4 验证运行时性能的提高 568
A.5 右值和包含的对象 569
A.6 引用:右值和左值再思考 570
附录B C++11新功能概述 572
B.1 对象结构改进 572
B.2 其他核心语言增强功能 573
B.3 其他新关键字 574
B.4 标准库的扩展 574
附录C ASCII码 576