《C++程序设计语言 第4部分 标准库》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111544395
  • 页数:352 页
图书介绍:《C++程序设计语言》(原书第4版)是C++领域最经典的参考书,介绍了C++11的各项新特性和新功能。全书共分四部分。第一部分(第1~5章)是引言,包括C++的背景知识,C++语言及其标准库的简要介绍;第二部分(第6~15章)介绍C++的内置类型和基本特性,以及如何用它们构造程序;第三部分(第16~29章)介绍C++的抽象机制及如何用这些机制编写面向对象程序和泛型程序;第四部分(第30~44章)概述标准库并讨论一些兼容性问题。由于篇幅问题,原书中文版分两册出版,分别对应原书的第一至三部分和第四部分。这一册为第四部分。

第四部分 标准库 2

第30章 标准库概览 2

30.1 引言 2

30.1.1 标准库设施 2

30.1.2 设计约束 4

30.1.3 描述风格 4

30.2 头文件 5

30.3 语言支持 9

30.3.1 initializer_list支持 9

30.3.2 范围for支持 10

30.4 错误处理 10

30.4.1 异常 10

30.4.2 断言 14

30.4.3 system_error 15

30.5 建议 23

第31章 STL容器 24

31.1 引言 24

31.2 容器概览 24

31.2.1 容器表示 27

31.2.2 对元素的要求 28

31.3 操作概览 30

31.3.1 成员类型 32

31.3.2 构造函数、析构函数和赋值操作 33

31.3.3 大小和容量 34

31.3.4 迭代器 35

31.3.5 元素访问 36

31.3.6 栈操作 36

31.3.7 列表操作 37

31.3.8 其他操作 38

31.4 容器 38

31.4.1 vector 38

31.4.2 链表 42

31.4.3 关联容器 44

31.5 容器适配器 53

31.5.1 stack 54

31.5.2 queue 55

31.5.3 priority_queue 56

31.6 建议 57

第32章 STL算法 59

32.1 引言 59

32.2 算法 59

32.2.1 序列 60

32.3 策略实参 61

32.3.1 复杂性 62

32.4 不修改序列的算法 63

32.4.1 for_each() 63

32.4.2 序列谓词 63

32.4.3 count() 63

32.4.4 find() 64

32.4.5 equal()和mismatch() 64

32.4.6 search() 65

32.5 修改序列的算法 66

32.5.1 copy() 66

32.5.2 unique() 67

32.5.3 remove()和replace() 68

32.5.4 rotate()、random_shuffle()和partition() 69

32.5.5 排列 70

32.5.6 fill() 70

32.5.7 swap() 71

32.6 排序和搜索 71

32.6.1 二分搜索 74

32.6.2 merge() 75

32.6.3 集合算法 75

32.6.4 堆 76

32.6.5 lexicographical_compare() 77

32.7 最大值和最小值 78

32.8 建议 79

第33章 STL迭代器 80

33.1 引言 80

33.1.1 迭代器模型 80

33.1.2 迭代器类别 81

33.1.3 迭代器萃取 82

33.1.4 迭代器操作 85

33.2 迭代器适配器 85

33.2.1 反向迭代器 86

33.2.2 插入迭代器 88

33.2.3 移动迭代器 89

33.3 范围访问函数 89

33.4 函数对象 90

33.5 函数适配器 91

33.5.1 bind() 92

33.5.2 mem_fn() 93

33.5.3 function 93

33.6 建议 95

第34章 内存和资源 96

34.1 引言 96

34.2 “拟容器” 96

34.2.1 array 97

34.2.2 bitset 99

34.2.3 vector<bool> 103

34.2.4 元组 104

34.3 资源管理指针 107

34.3.1 unique_ptr 108

34.3.2 shared_ptr 111

34.3.3 weak_ptr 113

34.4 分配器 115

34.4.1 默认分配器 116

34.4.2 分配器萃取 118

34.4.3 指针萃取 119

34.4.4 限域的分配器 119

34.5 垃圾收集接口 121

34.6 未初始化内存 123

34.6.1 临时缓冲区 123

34.6.2 raw_storage_iterator 124

34.7 建议 125

第35章 工具 126

35.1 引言 126

35.2 时间 126

35.2.1 duration 127

35.2.2 time_point 129

35.2.3 时钟 131

35.2.4 时间萃取 132

35.3 编译时有理数运算 132

35.4 类型函数 134

35.4.1 类型萃取 134

35.4.2 类型生成器 138

35.5 其他工具 142

35.5.1 move()和forward() 142

35.5.2 swap() 143

35.5.3 关系运算符 143

35.5.4 比较和哈希type_info 144

35.6 建议 145

第36章 字符串 146

36.1 引言 146

36.2 字符分类 146

36.2.1 分类函数 146

36.2.2 字符萃取 147

36.3 字符串 148

36.3.1 string与C风格字符串 149

36.3.2 构造函数 151

36.3.3 基本操作 152

36.3.4 字符串I/O 153

36.3.5 数值转换 154

36.3.6 类STL操作 155

36.3.7 find系列函数 157

36.3.8 子串 158

36.4 建议 159

第37章 正则表达式 160

37.1 正则表达式 160

37.1.1 正则表达式符号表示 161

37.2 regex 165

37.2.1 匹配结果 166

37.2.2 格式化 169

37.3 正则表达式函数 170

37.3.1 regex_match() 170

37.3.2 regex_search() 171

37.3.3 regex_replace() 172

37.4 正则表达式迭代器 173

37.4.1 regex_iterator 173

37.4.2 regex_token_iterator 175

37.5 regex_traits 176

37.6 建议 177

第38章 I/O流 178

38.1 引言 178

38.2 I/O流层次 180

38.2.1 文件流 180

38.2.2 字符串流 182

38.3 错误处理 183

38.4 I/O操作 184

38.4.1 输入操作 185

38.4.2 输出操作 187

38.4.3 操纵符 189

38.4.4 流状态 190

38.4.5 格式化 194

38.5 流迭代器 200

38.6 缓冲 201

38.6.1 输出流和缓冲区 204

38.6.2 输入流和缓冲区 205

38.6.3 缓冲区迭代器 205

38.7 建议 207

第39章 区域设置 209

39.1 处理文化差异 209

39.2 类locale 211

39.2.1 命名locale 213

39.2.2 比较string 216

39.3 类facet 217

39.3.1 访问locale中的facet 218

39.3.2 一个简单的用户自定义facet 218

39.3.3 locale和facet的使用 221

39.4 标准facet 221

39.4.1 string比较 223

39.4.2 数值格式化 226

39.4.3 货币格式化 231

39.4.4 日期和时间格式化 235

39.4.5 字符分类 238

39.4.6 字符编码转换 241

39.4.7 消息 244

39.5 便利接口 248

39.5.1 字符分类 248

39.5.2 字符转换 248

39.5.3 字符串转换 249

39.5.4 缓冲区转换 250

39.6 建议 250

第40章 数值计算 252

40.1 引言 252

40.2 数值限制 252

40.2.1 数值限制宏 255

40.3 标准数学函数 255

40.4 复数complex 257

40.5 数值数组:valarray 258

40.5.1 构造函数和赋值操作 258

40.5.2 下标操作 260

40.5.3 运算 261

40.5.4 切片 263

40.5.5 slice_array 265

40.5.6 推广切片 265

40.6 推广数值算法 267

40.6.1 accumulate() 267

40.6.2 inner_product() 268

40.6.3 partial_sum()和adjacent_difference() 269

40.6.4 iota() 270

40.7 随机数 270

40.7.1 引擎 272

40.7.2 随机设备 274

40.7.3 分布 274

40.7.4 C风格随机数 277

40.8 建议 278

第41章 并发 279

41.1 引言 279

41.2 存模型 280

41.2.1 内存位置 281

41.2.2 指令重排 282

41.2.3 内存序 282

41.2.4 数据竞争 283

41.3 原子性 285

41.3.1 atomic类型 287

41.3.2 标志和栅栏 291

41.4 volatile 292

41.5 建议 292

第42章 线程和任务 293

42.1 引言 293

42.2 线程 293

42.2.1 身份 294

42.2.2 构造 295

42.2.3 析构 296

42.2.4 join() 297

42.2.5 detach() 298

42.2.6 名字空间this_thread 299

42.2.7 杀死thread 300

42.2.8 thread_local数据 300

42.3 避免数据竞争 302

42.3.1 互斥量 302

42.3.2 多重锁 309

42.3.3 call_once() 311

42.3.4 条件变量 311

42.4 基于任务的并发 315

42.4.1 future和promise 316

42.4.2 promise 317

42.4.3 packaged_task 318

42.4.4 future 320

42.4.5 shared_future 323

42.4.6 async() 323

42.4.7 一个并行find()示例 325

42.5 建议 328

第43章 C标准库 330

43.1 引言 330

43.2 文件 330

43.3 printf()系列函数 331

43.4 C风格字符串 334

43.5 内存 335

43.6 日期和时间 336

43.7 杂项 339

43.8 建议 340

第44章 兼容性 341

44.1 引言 341

44.2 C++11扩展 341

44.2.1 语言特性 341

44.2.2 标准库组件 343

44.2.3 弃用特性 344

44.2.4 应对旧版本C++实现 344

44.3 C/C++兼容性 345

44.3.1 C和C++是兄弟 345

44.3.2 “静默”差异 346

44.3.3 不兼容C++的C代码 347

44.3.4 不兼容C的C++代码 350

44.4 建议 351