《BOOST程序库完全开发指南:深入C++“准”标准库 第3版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:罗剑锋著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121253133
  • 页数:618 页
图书介绍:Boost由C++标准委员会部分成员所设立的Boost社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简捷、优雅、灵活和高效。本书基于2014年11月发布的Boost 1.57版,介绍了其中的所有129个库,并且结合C++11/14标准详细、深入地讲解了其中数十个库,同时实现了若干颇具实用价值的工具类和函数。

第0章 导读 1

0.1 关于本书 1

0.2 读者对象 1

0.3 术语与风格 2

0.4 C++标准 3

0.5 本书的结构 4

0.6 如何阅读本书 5

0.7 本书的源码 5

第1章 Boost程序库总论 7

1.1 关于Boost 7

1.1.1 获取方式 8

1.1.2 目录结构 8

1.1.3 使用方式 9

1.2 开发环境 9

1.2.1 操作系统和编译器 10

1.2.2 快捷安装Boost 10

1.2.3 完全安装Boost 10

1.2.4 定制安装Boost 11

1.2.5 验证开发环境 11

1.3 构建工具 12

1.3.1 安装b2 12

1.3.2 构建脚本 12

1.3.3 构建语言 13

1.3.4 构建命令 14

1.4 总结 14

第2章 时间与日期 15

2.1 timer库概述 15

2.2 timer 16

2.2.1 用法 16

2.2.2 类摘要 17

2.2.3 使用建议 18

2.3 progress_timer 18

2.3.1 用法 18

2.3.2 类摘要 19

2.4 progress_display 20

2.4.1 类摘要 20

2.4.2 用法 21

2.4.3 注意事项 22

2.5 date_time库概述 23

2.5.1 编译与使用 24

2.5.2 基本概念 24

2.6 处理日期 25

2.6.1 日期 25

2.6.2 创建日期对象 26

2.6.3 访问日期 27

2.6.4 日期的输出 28

2.6.5 转换tm结构 29

2.6.6 日期长度 29

2.6.7 日期运算 31

2.6.8 日期区间 32

2.6.9 日期区间运算 33

2.6.10 日期迭代器 35

2.6.11 其他功能 36

2.6.12 综合运用 36

2.7 处理时间 39

2.7.1 时间长度 39

2.7.2 操作时间长度 40

2.7.3 时间长度的精确度 42

2.7.4 时间点 43

2.7.5 创建时间点对象 44

2.7.6 操作时间点对象 45

2.7.7 转换tm/time_t结构 46

2.7.8 时间区间 46

2.7.9 时间迭代器 47

2.7.10 综合运用 47

2.8 date_time库的高级议题 50

2.8.1 编译配置宏 50

2.8.2 自定义字面值 51

2.8.3 格式化时间 51

2.8.4 本地时间 52

2.8.5 序列化 54

2.9 总结 54

第3章 内存管理 57

3.1 smart_ptr库概述 57

3.1.1 RAII机制 57

3.1.2 智能指针 58

3.2 scoped_ptr 59

3.2.1 类摘要 59

3.2.2 操作函数 60

3.2.3 用法 61

3.2.4 对比unique_ptr 63

3.2.5 make_unique 64

3.3 scoped_array 65

3.3.1 类摘要 65

3.3.2 用法 66

3.3.3 对比unique_ptr 66

3.3.4 使用建议 67

3.4 shared_ptr 68

3.4.1 类摘要 68

3.4.2 操作函数 69

3.4.3 用法 70

3.4.4 工厂函数 72

3.4.5 应用于标准容器 73

3.4.6 应用于桥接模式 74

3.4.7 应用于工厂模式 75

3.4.8 定制删除器 77

3.4.9 高级议题 78

3.5 shared_array 82

3.5.1 类摘要 82

3.5.2 用法 82

3.6 weak_ptr 83

3.6.1 类摘要 83

3.6.2 用法 84

3.6.3 enable_shared_from_this 85

3.6.4 enable_shared_from_raw 86

3.6.5 打破循环引用 88

3.7 intrusive_ptr 89

3.7.1 类摘要 89

3.7.2 用法 90

3.7.3 引用计数器 91

3.8 pool库概述 92

3.9 pool 93

3.9.1 类摘要 93

3.9.2 操作函数 94

3.9.3 用法 95

3.10 object_pool 95

3.10.1 类摘要 96

3.10.2 操作函数 96

3.10.3 用法 97

3.10.4 使用更多的构造参数 97

3.11 singleton_pool 99

3.11.1 类摘要 99

3.11.2 用法 99

3.12 pool_alloc 100

3.13 总结 101

第4章 实用工具 103

4.1 noncopyable 103

4.1.1 原理 104

4.1.2 用法 104

4.1.3 实现 105

4.2 ignore_unused 106

4.2.1 基本用法 106

4.2.2 模板用法 107

4.3 optional 108

4.3.1 类摘要 108

4.3.2 操作函数 109

4.3.3 用法 111

4.3.4 工厂函数 112

4.4 assign 113

4.4.1 list_inserter 113

4.4.2 使用operator+= 114

4.4.3 使用operator() 115

4.4.4 generic_list 116

4.4.5 初始化容器 117

4.4.6 减少重复输入 119

4.4.7 操作非标准容器 120

4.4.8 其他议题 121

4.5 swap 122

4.5.1 原理 122

4.5.2 交换数组 123

4.5.3 特化std::swap 124

4.5.4 特化ADL可找到的swap 125

4.5.5 使用建议 126

4.6 singleton 126

4.6.1 类摘要 126

4.6.2 用法 127

4.7 tribool 128

4.7.1 类摘要 129

4.7.2 用法 130

4.7.3 为第三态更名 131

4.7.4 输入/输出 131

4.7.5 与optional<bool>的区别 132

4.8 operators 133

4.8.1 基本运算概念 134

4.8.2 算术操作符的用法 135

4.8.3 基类链 137

4.8.4 复合运算概念 138

4.8.5 相等与等价 140

4.8.6 解引用操作符 141

4.8.7 下标操作符 142

4.8.8 bool转型操作符 143

4.8.9 二元操作符 145

4.9 exception 145

4.9.1 标准库中的异常 146

4.9.2 类摘要 146

4.9.3 向异常传递信息 148

4.9.4 错误信息类 149

4.9.5 包装标准异常 151

4.9.6 使用函数抛出异常 152

4.9.7 获得更多的调试信息 152

4.9.8 高级议题 154

4.10 uuid 155

4.10.1 类摘要 156

4.10.2 用法 157

4.10.3 生成器 158

4.10.4 增强的uuid类 160

4.10.5 转换字符串 162

4.10.6 SHA1摘要算法 163

4.11 config 164

4.11.1 BOOST_STRINGIZE 164

4.11.2 BOOST_STATIC_CONSTANT 165

4.12 utility 165

4.12.1 BOOST_BINARY 165

4.12.2 BOOST_CURRENT_FUNCTION 167

4.13 总结 168

第5章 字符串与文本处理 171

5.1 lexical_cast 171

5.1.1 函数声明 172

5.1.2 用法 172

5.1.3 错误处理 173

5.1.4 对转换对象的要求 174

5.1.5 应用于自定义类 175

5.1.6 对比C+++11标准 176

5.2 format 177

5.2.1 简单的例子 178

5.2.2 输入操作符% 179

5.2.3 类摘要 180

5.2.4 格式化语法 182

5.2.5 format的性能 183

5.2.6 高级用法 183

5.3 string_ref 184

5.3.1 类摘要 185

5.3.2 用法 186

5.4 string_algo 188

5.4.1 简单的例子 188

5.4.2 string_algo概述 189

5.4.3 大小写转换 190

5.4.4 判断式(算法) 191

5.4.5 判断式(函数对象) 193

5.4.6 分类 193

5.4.7 修剪 194

5.4.8 查找 195

5.4.9 替换与删除 197

5.4.10 分割 199

5.4.11 合并 200

5.4.12 查找(分割)迭代器 201

5.5 tokenizer 203

5.5.1 类摘要 203

5.5.2 用法 204

5.5.3 分词函数对象 204

5.5.4 char_separator 205

5.5.5 escaped_list_separator 206

5.5.6 offset_separator 207

5.5.7 tokenizer库的缺陷 208

5.6 xpressive 210

5.6.1 两种使用方式 210

5.6.2 正则表达式语法简介 211

5.6.3 类摘要 212

5.6.4 正则匹配 214

5.6.5 正则查找 217

5.6.6 正则替换 218

5.6.7 正则迭代 219

5.6.8 正则分词 221

5.6.9 对比boost.regex 222

5.6.10 高级议题 223

5.7 总结 225

第6章 正确性与测试 227

6.1 assert 227

6.1.1 基本用法 227

6.1.2 禁用断言 229

6.1.3 扩展用法 229

6.2 static_assert 231

6.2.1 定义 231

6.2.2 用法 231

6.2.3 使用建议 233

6.3 lightweight_test 233

6.3.1 测试断言 233

6.3.2 用法 234

6.3.3 测试元编程 235

6.4 test 235

6.4.1 最小化的测试套件 236

6.4.2 单元测试框架简介 237

6.4.3 测试断言 238

6.4.4 测试用例与测试套件 239

6.4.5 测试实例 240

6.4.6 测试夹具 242

6.4.7 测试日志 244

6.4.8 运行参数 245

6.4.9 函数执行监视器 246

6.4.10 程序执行监视器 249

6.4.11 高级议题 249

6.5 总结 251

第7章 容器与数据结构 253

7.1 array 253

7.1.1 类摘要 254

7.1.2 操作函数 254

7.1.3 用法 255

7.1.4 能力限制 256

7.1.5 初始化 257

7.1.6 零长度的数组 257

7.1.7 对比C+++11标准 258

7.2 dynamic_bitset 258

7.2.1 类摘要 259

7.2.2 创建与赋值 260

7.2.3 容器操作 261

7.2.4 位运算与比较运算 262

7.2.5 访问元素 263

7.2.6 类型转换 264

7.2.7 集合操作 265

7.2.8 综合运用 265

7.3 unordered 267

7.3.1 散列集合简介 267

7.3.2 散列集合的用法 269

7.3.3 散列映射简介 271

7.3.4 散列映射的用法 272

7.3.5 高级议题 274

7.4 bimap 276

7.4.1 类摘要 276

7.4.2 基本用法 277

7.4.3 值的集合类型 278

7.4.4 集合类型的用法 279

7.4.5 使用标签类型 281

7.4.6 使用assign库 282

7.4.7 查找与替换 283

7.4.8 投射 285

7.4.9 高级议题 285

7.5 circular_buffer 286

7.5.1 类摘要 287

7.5.2 用法 288

7.5.3 环形缓冲区 288

7.5.4 空间优化型缓冲区 290

7.6 tuple 290

7.6.1 最简单的tuple:pair 291

7.6.2 类摘要 292

7.6.3 创建与赋值 292

7.6.4 访问元素 293

7.6.5 比较操作 295

7.6.6 输入输出 295

7.6.7 联结变量 296

7.6.8 应用于assign库 297

7.6.9 应用于exception库 298

7.6.10 内部结构 298

7.6.11 使用访问者模式 299

7.6.12 高级议题 301

7.7 any 303

7.7.1 类摘要 303

7.7.2 访问元素 304

7.7.3 用法 305

7.7.4 简化的操作函数 306

7.7.5 保存指针 307

7.7.6 输出 308

7.7.7 应用于容器 309

7.8 variant 310

7.8.1 类摘要 310

7.8.2 访问元素 311

7.8.3 用法 312

7.8.4 访问器 313

7.8.5 与any的区别 315

7.8.6 高级议题 316

7.9 multi_array 317

7.9.1 类摘要 318

7.9.2 用法 319

7.9.3 改变形状和大小 321

7.9.4 创建子视图 321

7.9.5 适配普通数组 323

7.9.6 高级议题 324

7.10 property_tree 326

7.10.1 类摘要 327

7.10.2 读取配置信息 328

7.10.3 写入配置信息 330

7.10.4 更多用法 331

7.10.5 XML数据格式 332

7.10.6 其他数据格式 333

7.10.7 高级议题 335

7.11 总结 336

第8章 算法 339

8.1 foreach 339

8.1.1 用法 340

8.1.2 详细解说 341

8.1.3 更优雅的名字 342

8.1.4 支持的序列类型 343

8.1.5 存在的问题 344

8.2 minmax 344

8.2.1 用法 345

8.2.2 存在的问题 345

8.3 minmax_element 346

8.3.1 用法 346

8.3.2 其他函数的用法 347

8.4 algorithm 348

8.4.1 clamp 348

8.4.2 clamp_range 349

8.4.3 hex和unhex 349

8.5 总结 350

第9章 数学与数字 353

9.1 math.constants 353

9.1.1 基本用法 354

9.1.2 高级用法 355

9.2 integer 355

9.2.1 integer_traits 355

9.2.2 标准整数类型 357

9.2.3 整数类型模板类 359

9.3 rational 362

9.3.1 类摘要 362

9.3.2 创建与赋值 363

9.3.3 算术运算与比较运算 364

9.3.4 类型转换 365

9.3.5 输入输出 365

9.3.6 分子与分母 365

9.3.7 与数学函数配合工作 366

9.3.8 rational的精确度 366

9.3.9 最大公约数和最小公倍数 366

9.4 ratio 367

9.4.1 类摘要 367

9.4.2 用法 368

9.4.3 数字单位 369

9.4.4 字符串表示 371

9.4.5 对比C+++11标准 372

9.5 crc 372

9.5.1 类摘要 372

9.5.2 预定义的实现类 373

9.5.3 用法 373

9.6 random 375

9.6.1 随机数发生器 375

9.6.2 随机数发生器的拷贝 377

9.6.3 随机数分布器 377

9.6.4 随机数分布器类摘要 378

9.6.5 随机数分布器用法 381

9.6.6 变量发生器 382

9.6.7 产生随机数据块 383

9.6.8 真随机数发生器 384

9.6.9 实现真随机数发生器 385

9.7 总结 387

第10章 操作系统相关 389

10.1 system 389

10.1.1 错误值枚举 390

10.1.2 错误类别 390

10.1.3 错误代码 392

10.1.4 错误异常 394

10.2 chrono 395

10.2.1 时间长度 395

10.2.2 使用时间长度 396

10.2.3 时钟 398

10.2.4 时间点 400

10.2.5 综合运用 402

10.3 cpu_timer 404

10.3.1 时间类型 404

10.3.2 cpu_timer 405

10.3.3 auto_cpu_timer 406

10.3.4 定制输出格式 407

10.4 filesystem 408

10.4.1 类摘要 409

10.4.2 路径表示 411

10.4.3 可移植的文件名 412

10.4.4 路径处理 413

10.4.5 异常处理 415

10.4.6 文件状态 416

10.4.7 文件属性 418

10.4.8 文件操作 419

10.4.9 迭代目录 420

10.4.10 实例1:实现查找文件功能 423

10.4.11 实例2:实现模糊查找文件功能 424

10.4.12 实例3:实现拷贝目录功能 426

10.4.13 文件流操作 427

10.5 program_options 428

10.5.1 概述 429

10.5.2 选项值 431

10.5.3 选项描述器 432

10.5.4 选项描述器的用法 433

10.5.5 分析器 435

10.5.6 存储器 436

10.5.7 使用位置选项值 437

10.5.8 分析环境变量 439

10.5.9 分组选项信息 440

10.5.10 高级用法 442

10.6 总结 445

第11章 函数与回调 447

11.1 ref 447

11.1.1 类摘要 448

11.1.2 基本用法 449

11.1.3 工厂函数 450

11.1.4 操作包装 450

11.1.5 综合应用 451

11.1.6 对比C+++11标准 452

11.2 bind 453

11.2.1 工作原理 454

11.2.2 绑定普通函数 455

11.2.3 绑定成员函数 456

11.2.4 绑定成员变量 458

11.2.5 绑定函数对象 458

11.2.6 使用ref库 459

11.2.7 对比C+++11标准 460

11.2.8 高级议题 460

11.3 function 463

11.3.1 类摘要 464

11.3.2 function的声明 465

11.3.3 操作函数 465

11.3.4 比较操作 466

11.3.5 用法 466

11.3.6 使用ref库 468

11.3.7 用于回调 469

11.3.8 对比C+++11的auto 471

11.3.9 对比std::function 472

11.4 signals2 472

11.4.1 类摘要 473

11.4.2 操作函数 474

11.4.3 插槽的连接与调用 475

11.4.4 信号的返回值 477

11.4.5 合并器 477

11.4.6 管理信号的连接 479

11.4.7 更灵活的管理信号连接 480

11.4.8 自动连接管理 483

11.4.9 应用于观察者模式 485

11.4.10 高级议题 488

11.5 总结 492

第12章 并发编程 495

12.1 atomic 495

12.1.1 类摘要 496

12.1.2 基本用法 498

12.1.3 整数atomic的用法 499

12.1.4 并发顺序一致性 500

12.2 thread 503

12.2.1 mutex 503

12.2.2 lock_guard 506

12.2.3 unique_lock 507

12.2.4 lock适配器 510

12.2.5 lockable概念检查类 512

12.2.6 lock函数 512

12.2.7 thread 513

12.2.8 使用线程 515

12.2.9 中断线程 518

12.2.10 thread_group 521

12.2.11 call_once 522

12.2.12 条件变量 523

12.2.13 shared_mutex 527

12.2.14 future 529

12.2.15 shared_future 533

12.2.16 高级议题 534

12.3 asio 536

12.3.1 概述 537

12.3.2 UNIX信号 543

12.3.3 定时器 549

12.3.4 网络通信概述 554

12.3.5 同步TCP通信 560

12.3.6 异步TCP通信 562

12.3.7 解析网络地址 568

12.3.8 协程 570

12.3.9 其他议题 573

12.4 总结 577

第13章 Boost组件速览 579

13.1 算法 579

13.2 字符串和文本处理 580

13.3 容器与数据结构 580

13.4 迭代器 581

13.5 函数对象与高级编程 582

13.6 泛型编程 583

13.7 模板元编程 585

13.8 预处理元编程 585

13.9 并发编程 586

13.10 数学与数字 587

13.11 TR1实现 588

13.12 输入输出 588

13.13 C++11特性模拟实现 588

13.14 杂项 589

13.15 总结 591

第14章 Boost与设计模式 593

14.1 创建型模式 594

14.2 结构型模式 595

14.3 行为模式 598

14.4 其他模式 601

14.5 总结 603

第15章 结束语 605

15.1 未臻完美的Boost 605

15.2 让Boost工作得更好 606

15.3 工夫在诗外 608

15.4 临别赠言 610

附录A 推荐书目 611

附录B C++标准简述 613

附录C C++关键字浅谈 617