2018年8月24日14:04:1242.7K
C++程序设计语言(第4部分:标准库)(原书第4版) 内容简介
《C++程序设计语言》(原书第4版)是C++领域经典的参考书,介绍了C++11的各项新特性和新功能。全书共分四部分。部分(第1~5章)是引言,包括C++的背景知识,C++语言及其标准库的简要介绍;第二部分(第6~15章)介绍C++的内置类型和基本特性,以及如何用它们构造程序;第三部分(第16~29章)介绍C++的抽象机制及如何用这些机制编写面向对象程序和泛型程序;第四部分(第30~44章)概述标准库并讨论一些兼容性问题。由于篇幅问题,原书中文版分两册出版,分别对应原书的至三部分和第四部分。这一册为第四部分。
C++程序设计语言(第4部分:标准库)(原书第4版) 目录
第四部分 标准库
第30章 标准库概览
30.1 引言
30.1.1 标准库设施
30.1.2 设计约束
30.1.3 描述风格
30.2 头文件
30.3 语言支持
30.3.1 initializer_list支持
30.3.2 范围for支持
30.4 错误处理
30.4.1 异常
30.4.2 断言
30.4.3 system_error
30.5 建议
第31章 STL容器
31.1 引言
31.2 容器概览
31.2.1 容器表示
31.2.2 对元素的要求
31.3 操作概览
31.3.1 成员类型
31.3.2 构造函数、析构函数和赋值操作
31.3.3 大小和容量
31.3.4 迭代器
31.3.5 元素访问
31.3.6 栈操作
31.3.7 列表操作
31.3.8 其他操作
31.4 容器
31.4.1 vector
31.4.2 链表
31.4.3 关联容器
31.5 容器适配器
31.5.1 stack
31.5.2 queue
31.5.3 priority_queue
31.6 建议
第32章 STL算法
32.1 引言
32.2 算法
32.2.1 序列
32.3 策略实参
32.3.1 复杂性
32.4 不修改序列的算法
32.4.1 for_each()
32.4.2 序列谓词
32.4.3 count()
32.4.4 find()
32.4.5 equal()和mismatch()
32.4.6 search()
32.5 修改序列的算法
32.5.1 copy()
32.5.2 unique()
32.5.3 remove()和replace()
32.5.4 rotate()、random_shuffle()和partition()
32.5.5 排列
32.5.6 fill()
32.5.7 swap()
32.6 排序和搜索
32.6.1 二分搜索
32.6.2 merge()
32.6.3 集合算法
32.6.4 堆
32.6.5 lexicographical_compare()
32.7 最大值和最小值
32.8 建议
第33章 STL迭代器
33.1 引言
33.1.1 迭代器模型
33.1.2 迭代器类别
33.1.3 迭代器萃取
33.1.4 迭代器操作
33.2 迭代器适配器
33.2.1 反向迭代器
33.2.2 插入迭代器
33.2.3 移动迭代器
33.3 范围访问函数
33.4 函数对象
33.5 函数适配器
33.5.1 bind()
33.5.2 mem_fn()
33.5.3 function
33.6 建议
第34章 内存和资源
34.1 引言
34.2 “拟容器”
34.2.1 array
34.2.2 bitset
34.2.3 vector<bool>
34.2.4 元组
34.3 资源管理指针
34.3.1 unique_ptr
34.3.2 shared_ptr
34.3.3 weak_ptr
34.4 分配器
34.4.1 默认分配器
34.4.2 分配器萃取
34.4.3 指针萃取
34.4.4 限域的分配器
34.5 垃圾收集接口
34.6 未初始化内存
34.6.1 临时缓冲区
34.6.2 raw_storage_iterator
34.7 建议
第35章 工具
35.1 引言
35.2 时间
35.2.1 duration
35.2.2 time_point
35.2.3 时钟
35.2.4 时间萃取
35.3 编译时有理数运算
35.4 类型函数
35.4.1 类型萃取
35.4.2 类型生成器
35.5 其他工具
35.5.1 move()和forward()
35.5.2 swap()
35.5.3 关系运算符
35.5.4 比较和哈希type_info
35.6 建议
第36章 字符串
36.1 引言
36.2 字符分类
36.2.1 分类函数
36.2.2 字符萃取
36.3 字符串
36.3.1 string与C风格字符串
36.3.2 构造函数
36.3.3 基本操作
36.3.4 字符串I/O
36.3.5 数值转换
36.3.6 类STL操作
36.3.7 find系列函数
36.3.8 子串
36.4 建议
第37章 正则表达式
37.1 正则表达式
37.1.1 正则表达式符号表示
37.2 regex
37.2.1 匹配结果
37.2.2 格式化
37.3 正则表达式函数
37.3.1 regex_match()
37.3.2 regex_search()
37.3.3 regex_replace()
37.4 正则表达式迭代器
37.4.1 regex_iterator
37.4.2 regex_token_iterator
37.5 regex_traits
37.6 建议
第38章 I/O流
38.1 引言
38.2 I/O流层次
38.2.1 文件流
38.2.2 字符串流
38.3 错误处理
38.4 I/O操作
38.4.1 输入操作
38.4.2 输出操作
38.4.3 操纵符
38.4.4 流状态
38.4.5 格式化
38.5 流迭代器
38.6 缓冲
38.6.1 输出流和缓冲区
38.6.2 输入流和缓冲区
38.6.3 缓冲区迭代器
38.7 建议
第39章 区域设置
39.1 处理文化差异
39.2 类locale
39.2.1 命名locale
39.2.2 比较string
39.3 类facet
39.3.1 访问locale中的facet
39.3.2 一个简单的用户自定义facet
39.3.3 locale和facet的使用
39.4 标准facet
39.4.1 string比较
39.4.2 数值格式化
39.4.3 货币格式化
39.4.4 日期和时间格式化
39.4.5 字符分类
39.4.6 字符编码转换
39.4.7 消息
39.5 便利接口
39.5.1 字符分类
39.5.2 字符转换
39.5.3 字符串转换
39.5.4 缓冲区转换
39.6 建议
第40章 数值计算
40.1 引言
40.2 数值限制
40.2.1 数值限制宏
40.3 标准数学函数
40.4 复数complex
40.5 数值数组:valarray
40.5.1 构造函数和赋值操作
40.5.2 下标操作
40.5.3 运算
40.5.4 切片
40.5.5 slice_array
40.5.6 推广切片
40.6 推广数值算法
40.6.1 accumulate()
40.6.2 inner_product()
40.6.3 partial_sum()和adjacent_difference()
40.6.4 iota()
40.7 随机数
40.7.1 引擎
40.7.2 随机设备
40.7.3 分布
40.7.4 C风格随机数
40.8 建议
第41章 并发
41.1 引言
41.2 存模型
41.2.1 内存位置
41.2.2 指令重排
41.2.3 内存序
41.2.4 数据竞争
41.3 原子性
41.3.1 atomic类型
41.3.2 标志和栅栏
41.4 volatile
41.5 建议
第42章 线程和任务
42.1 引言
42.2 线程
42.2.1 身份
42.2.2 构造
42.2.3 析构
42.2.4 join()
42.2.5 detach()
42.2.6 名字空间this_thread
42.2.7 杀死thread
42.2.8 thread_local数据
42.3 避免数据竞争
42.3.1 互斥量
42.3.2 多重锁
42.3.3 call_once()
42.3.4 条件变量
42.4 基于任务的并发
42.4.1 future和promise
42.4.2 promise
42.4.3 packaged_task
42.4.4 future
42.4.5 shared_future
42.4.6 async()
42.4.7 一个并行find()示例
42.5 建议
第43章 C标准库
43.1 引言
43.2 文件
43.3 printf()系列函数
43.4 C风格字符串
43.5 内存
43.6 日期和时间
43.7 杂项
43.8 建议
第44章 兼容性
44.1 引言
44.2 C++11扩展
44.2.1 语言特性
44.2.2 标准库组件
44.2.3 弃用特性
44.2.4 应对旧版本C++实现
44.3 C/C++兼容性
44.3.1 C和C++是兄弟
44.3.2 “静默”差异
44.3.3 不兼容C++的C代码
44.3.4 不兼容C的C++代码
44.4 建议
C++程序设计语言(第4部分:标准库)(原书第4版) 精彩文摘
标准库的设计主要由这三方面作用确定,而这三方面也是紧密相关的。例如,对一个专用的程序库而言,可移植性通常是一个重要的设计准则,而链表和映射这种通用容器类型对独立开发的库之间进行便利交互是非常重要的。
从设计角度来说,最后一个作用特别重要,因为它有助于限制标准库的范围以及对标准库组件设置约束。例如,标准库提供了字符串和链表。如果不提供这两种设施的话,独立开发的库之间可能只能用内置类型来交互。但是,标准库并未提供高级线性代数和图形化组件。这些组件显然应用广泛,但独立开发的库之间很少直接利用它们进行交互。
对某个组件而言,除非它是支持这些目标所必需的,否则我们就应将其置于其他库而不是标准库中。将某个组件排除在标准库之外为多个库竞相实现同一个思想打开了大门,这有好的一面也有不好的一面。一旦一个库证明它能广泛适用于不同计算环境和应用领域,它就会成为标准库的候选,正则表达式库(见第37章)就是这样一个例子。
本文来自努力打拼@路上投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。