前言
内容提要
第1章 预备知识及简介
1.1 基本概念
1.1.1 何谓“命名空间”
1.1.2 头文件
1.1.3 面向对象的程序设计
1.1.4 C++中的声明和定义
1.1.5 最简单的C++程序
1.1.6 指针
1.1.7 函数
1.1.8 文件
1.1.9 编译和链接
1.1.10 程序启动和终止
1.1.11 异常处理
1.1.12 预处理命令
1.1.13 宏
1.2 类模板定义
1.2.1 类模板实例化
1.2.2 类模板的成员函数
1.2.3 类模板的静态数据成员
1.3 成员模板
1.4 友元模板
1.5 函数模板
1.6 类模板的参数
1.7 STL简介
1.7.1 STL历史
1.7.2 STL组件
1.7.3 STL基本结构
1.7.4 STL编程概述
1.7.5 小结
1.8 小结
第2章 字符串类模板
2.1 字符串类库简述
2.2 字符的特点
2.3 字符串类模板(basic_string)
2.4 字符串通用操作
2.4.1 构造器和析构器
2.4.2 大小和容量
2.4.3 元素存取(访问)
2.4.4 字符串比较
2.4.5 字符串内容的修改和替换
2.4.6 字符串联接
2.4.7 字符串I/O操作
2.4.8 字符串查找
2.4.9 字符串对迭代器的支持
2.4.10 字符串对配置器的支持
2.5 小结
第3章 容器——对象储存器
3.1 容器概念
3.2 序列式容器
3.2.1 vector(向量)类模板
3.2.2 list(列表)类模板
3.2.3 deque(双端队列)类模板
3.3 关联式容器
3.3.1 set/multiset(集合)类模板
3.3.2 map/multimap(图)类模板
3.4 特殊容器用法
3.4.1 bitset(位集合)类模板
3.4.2 stack(栈)类模板
3.4.3 queue(队列)类模板
3.4.4 priority queues(优先队列)类模板
3.5 小结
第4章 STL算法
4.1 算法库简介
4.2 非修改性算法
4.2.1 for each()算法
4.2.2 元素计数算法
4.2.3 最小值和最大值算法
4.2.4 搜索算法
4.2.5 比较算法
4.3 修改性算法
4.3.1 复制
4.3.2 转换
4.3.3 互换
4.3.4 赋值
4.3.5 替换
4.3.6 逆转
4.3.7 旋转
4.3.8 排列
4.4 排序及相关操作算法
4.4.1 全部元素排序
4.4.2 局部排序
4.4.3 根据某个元素排序
4.4.4 堆(Heap)操作算法
4.4.5 容器合并、交集和差集算法
4.4.6 搜索算法
4.5 删除算法
4.6 小结
第5章 迭代器––访问容器的接口
5.1 迭代器及其特性
5.2 头文件
5.3 迭代器类型详述
5.3.1 输入型迭代器
5.3.2 输出型迭代器
5.3.3 前向型迭代器
5.3.4 双向型迭代器
5.3.5 随机访问型迭代器
5.3.6 vector迭代器的递增和递减
5.4 迭代器配接器
5.4.1 逆向型迭代器
5.4.2 插入型迭代器
5.4.3 流型迭代器
5.5 迭代器辅助函数
5.5.1 前进函数advance()
5.5.2 距离函数distance()
5.5.3 交换两个迭代器所指内容iter_swap()
5.6 小结
第6章 数值计算类模板
6.1 复数运算
6.1.1 一个复数运算例题
6.1.2 复数类成员函数
6.1.3 复数类运算符
6.1.4 复数类运算
6.1.5 复数的超越函数运算
6.2 数组(向量)运算
6.2.1 类valarray
6.2.2 数组子集类—类slice和类模板slice_array
6.2.3 类gslice和类模板gslice_array
6.2.4 类mask_array
6.2.5 类indirect_array
6.3 通用数值计算
6.3.1 求和算法(accumulate())
6.3.2 内积算法(inner_product())
6.3.3 部分和算法(partial_sum())
6.3.4 序列相邻差算法(adjacent_difference())
6.4 全局性数学函数
6.5 小结
第7章 输入输出类模板
7.1 IOStream简介
7.1.1 stream对象
7.1.2 stream类别
7.1.3 stream操作符
7.1.4 操控器
7.2 IOStream 基本类和标准IOStream对象
7.2.1 头文件
7.2.2 标准stream操作符
7.2.3 stream状态
7.2.4 标准输入和输出函数
7.3 格式化
7.3.1 格式标志
7.3.2 bool类型数据的格式控制
7.3.3 详解“字段宽度、填充字符和位置调整”
7.3.4 正记号与大写字符
7.3.5 数值进制
7.3.6 浮点数输出
7.3.7 一般性格式定义
7.4 类streambuffer介绍
7.4.1 流缓冲区
7.4.2 缓冲区迭代器
7.4.3 自定义缓冲区
7.5 基于字符串的流
7.5.1 streambuf类
7.5.2 类模板basic_istringstream
7.5.3 类模板basic_ostringstream
7.5.4 类模板basic_stringstream
7.6 基于文件的流
7.6.1 文件标识及其使用
7.6.2 随机访问
7.6.3 4个类模板
7.6.4 C库中的文件存取功能概述
7.7 小结
第8章 异常处理类模板
8.1 异常的概念和基本思想
8.1.1 异常的概念
8.1.2 异常的分类
8.1.3 异常的捕捉和处理
8.1.4 资源管理
8.1.5 异常和效率
8.1.6 异常的描述
8.1.7 未捕捉的异常
8.2 异常类及几个重要问题
8.2.1 类exception
8.2.2 调用abort()
8.2.3 堆栈解退
8.2.4 错误代码
8.2.5 异常的迷失
8.2.6 异常处理的局限性
8.3 处理异常详述
8.4 异常的特殊处理函数
8.5 小结
第9章 通用工具类模板(Utility)
9.1 通用工具库简介
9.1.1 相等比较
9.1.2 小于比较
9.1.3 复制构造
9.1.4 配置器要求
9.1.5 运算符
9.1.6 对组(pairs)
9.2 动态内存管理
9.2.1 默认配置器
9.2.2 raw storage iterator
9.2.3 temporary Buffers(临时缓冲区)
9.2.4 特定算法
9.2.5 C函数库中的内存管理函数
9.3 堆的内存分配
9.4 辅助功能
9.4.1 数值极限
9.4.2 较大较小值(最大最小值)
9.4.3 两值交换
9.4.4 辅助性比较
9.4.5 头文件cstdlib和cstddef简介
9.5 日期和时间
9.5.1 3个类型
9.5.2 结构体(tm)
9.5.3 相关时间函数
9.5.4 时间示例
9.6 模板类auto_ptr
9.6.1 auto_ptr类构造函数
9.6.2 类auto_ptr的成员及转换
9.6.3 使用类auto_ptr
9.7 小结
第10章 语言支持类模板
10.1 类型
10.2 执行属性
10.2.1 类模板numeric_limits及其成员
10.2.2 float_round_style和float_denorm_style
10.2.3 数值极限的特化
10.2.4 C库函数
10.2.5 应用举例
10.3 程序的启动和终止
10.4 动态内存管理
10.4.1 内存的分配和释放
10.4.2 内存分配错误
10.4.3 应用举例
10.5 类型标识符
10.5.1 类type_info
10.5.2 类bad_cast
10.5.3 类bad_typeid
10.5.4 操作符typeid
10.5.5 操作符dynamic_cast操作符
10.5.6 应用举例
10.6 异常处理
10.6.1 类exception
10.6.2 特殊异常处理
10.6.3 异常终止
10.6.4 未捕获异常(uncaught_exception)
10.6.5 应用举例
10.7 其他运行支持
10.7.1 概述
10.7.2 应用举例
10.8 小结
第11章 检测类模板详解
11.1 异常类
11.1.1 类logic_error
11.1.2 类domain_error
11.1.3 类invalid_argument
11.1.4 类length_error
11.1.5 类out_of_range
11.1.6 类runtime_error
11.1.7 类range_error
11.1.8 类overflow_error
11.1.9 类underflow_error(下溢出)
11.2 断言
11.3 错误编码
11.4 小结
第十二章 国际化类模板详解
12.1 国际化元素
12.2 多种字符编码
12.2.1 宽字符和多字节文本
12.2.2 字符特性
12.2.3 特殊字符国际化
12.3 类locale
12.3.1 类locale概述
12.3.2 类locale的facets
12.3.3 区域表示和混合区域表示
12.3.4 流和区域
12.3.5 刻面的处理
12.4 标准locale的分类
12.4.1 类ctype
12.4.2 数值类的locale类
12.4.3 刻面numeric punctuation
12.4.4 模版类collate
12.4.5 类time
12.4.6 类monetary
12.4.7 类message retrieval
12.4.8 Program-defined facets
12.4.9 C库locale
12.5 细述使用刻面
12.5.1 数值的格式化
12.5.2 时间/日期格式化
12.5.3 货币符号的格式化
12.5.4 字符的分类和转换
12.5.5 字符串校勘
12.5.6 信息国际化
12.6 小结
第13章 仿函数
13.1 仿函数的概念
13.1.1 仿函数的概念
13.1.2 仿函数的作用
13.2 预定义仿函数
13.3 辅助用仿函数
13.3.1 一元组合函数配接器
13.3.2 二元组合函数配接器
13.4 关系仿函数
13.4.1 等于(equal_to())
13.4.2 不等于(not_equal_to())
13.4.3 小于(less())
13.4.4 大于(greater())
13.4.5 大于等于(greater _equal)和小于等于(less_equal)
13.5 逻辑仿函数
13.5.1 谓词
13.5.2 逻辑仿函数
13.6 算术仿函数
13.6.1 加减乘除仿函数
13.6.2 “求余”仿函数和“求反”仿函数
13.7 其他类型的仿函数
13.7.1 证和映射
13.7.2 仿函数hash和subtractive_rng
13.8 适配器
13.8.1 成员函数适配器
13.8.2 其他适配器
13.9 小结
第14章 配置器详解
14.1 使用配置器
14.2 C++标准程序库的默认配置器(标准配置器)
14.3 自定义配置器
14.4 配置类的详细讨论
14.4.1 型别
14.4.2 配置类的成员函数
14.4.3 广义配置器
14.4.4 动态存储
14.4.5 C风格的分配
14.5 未初始化的内存
14.6 配置器举例
第15章 原子操作类模版
15.1 头文件简介
15.1.1 无锁属性
15.1.2 3个模板
15.1.3 原子模板的常规操作
15.1.4 头文件中的模板函数及算术运算符
15.1.5 原子类型atomic_flag
15.2 顺序及一致性
15.3 原子操作
15.3.1 模板类atomic
15.3.2 针对整型数据的特化模板
15.3.3 针对指针的特化模板
15.4 小结
第16章 线程控制类模版
16.1 要求和性能
16.1.1 异常
16.1.2 本地句柄
16.1.3 可锁定类型
16.2 线程类
16.2.1 线程类的成员变量id
16.2.2 线程类的成员函数
16.2.3 命名空间this_thread
16.2.4 线程示例
16.3 互斥
16.3.1 mutex模版类
16.3.2 lock模版类
16.3.3 call_once
16.4 条件变量
16.4.1 类condition_variable
16.4.2 类condition_variable_any
16.5 模板类future
16.5.1 模板类future_error,future_errc和future_category以及共享状态
16.5.2 模板类promise
16.5.3 模板类future
16.5.4 模板类shared_future
16.5.5 仿函数asyn
16.5.6 模板类packaged_task
16.6 小结
第17章 正则表达式
17.1 定义及要求
17.2 类模板basic_regex
17.2.1 类模板basic_regex的声明
17.2.2 名称空间std::regex_constants
17.2.3 类regex_error
17.2.4 类模板regex_traits
17.2.5 类basic_regex的使用
17.3 类模板sub_match和match_results
17.3.1 类模板sub_match
17.3.2 类模板match_results
17.4 正则表达式相关的3种算法
17.4.1 正则匹配算法regex_match
17.4.2 正则搜索算法regex_search
17.4.3 正则替换算法regex_replace
17.5 正则表达式的迭代器
17.5.1 迭代器regex_iterator
17.5.2 迭代器regex_token_iterator
17.6 小结
附录
附录A 数学函数
A.1 数学函数库中的宏
A.2 浮点计算减法协议开关
A.3 数学库中的宏函数
A.4 三角函数和反三角函数
A.5 指数和对数函数
A.6 幂函数和绝对值函数
A.7 误差和gamma函数
A.8 近似取整函数
A.9 求余函数
A.10 操作处理函数
A.11 最大值、最小值和正差函数
A.12 浮点乘加运算
A.13 比较函数(宏)
附录B 数据类型转换
B.1 字符转整数函数(atoi())
B.2 字符型转换浮点型函数(atof())
B.3 整型数转字符串(itoa()、ltoa()和ultoa())
B.4 浮点数转换字符串函数