《Boost程序库完全开发指南 深入C++“准”标准库》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:罗剑锋著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2012
  • ISBN:9787121166297
  • 页数:578 页
图书介绍:它由C++标准委员会部分成员所设立的Boost社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。本书基于Boost1.42版,介绍了其中的所有99个库,并且详细深入地讲解了其中数十个库,同时实现了若干颇具实用价值的工具类和函数,可帮助读者迅速理解掌握Boost的用法以及在实际应用开发工作中。

第0章 导读 1

0.1关于本书 1

0.2读者对象 1

0.3本书的术语与风格 2

0.4本书的结构 3

0.5如何阅读本书 5

第1章 Boost程序库总论 7

1.1关于Boost 7

1.1.1什么是Boost 7

1.1.2安装Boost 8

1.1.3使用Boost 8

1.2关于STLport 9

1.2.1什么是STLport 9

1.2.2安装STLport 10

1.2.3使用STLport 10

1.3开发环境 10

1.3.1 STLport的编译方法 11

1.3.2 Boost的编译方法 11

1.3.3 Visual Studio 2005环境设置 15

第2章 时间与日期 17

2.1 timer库概述 17

2.2 timer 17

2.2.1用法 18

2.2.2类摘要 18

2.2.3使用建议 19

2.3 progress timer 20

2.3.1用法 20

2.3.2类摘要 21

2.3.3扩展计时精度 21

2.4 progress_displa 23

2.4.1类摘要 24

2.4.2用法 25

2.4.3注意事项 26

2.5 date_time库概述 27

2.5.1编译date_time库 27

2.5.2 date time库的基本概念 28

2.6处理日期 29

2.6.1日期 29

2.6.2创建日期对象 30

2.6.3访问日期 31

2.6.4日期的输出 32

2.6.5与tm结构的转换 33

2.6.6日期长度 34

2.6.7日期运算 35

2.6.8日期区间 36

2.6.9 日期区间运算 38

2.6.10日期迭代器 39

2.6.11其他功能 40

2.6.12综合运用 40

2.7处理时间 43

2.7.1时间长度 43

2.7.2操作时间长度 45

2.7.3时间长度的精确度 46

2.7.4时间点 48

2.7.5创建时间点对象 48

2.7.6操作时间点对象 49

2.7.7与tm、time t等结构的转换 50

2.7.8时间区间 51

2.7.9时间迭代器 51

2.7.10综合运用 52

2.8 date time库的高级议题 54

2.8.1编译配置宏 54

2.8.2格式化时间 55

2.8.3本地时间 56

2.8.4序列化 57

2.9总结 58

第3章 内存管理 61

3.1 smart_ptr库概述 61

3.1.1 RAH机制 61

3.1.2智能指针 62

3.2 scoped_ptr 63

3.2.1类摘要 63

3.2.2操作函数 64

3.2.3用法 65

3.2.4与auto_ptr的区别 66

3.3 scoped_array 67

3.3.1类摘要 67

3.3.2用法 68

3.3.3使用建议 69

3.4 shared_ptr 69

3.4.1类摘要 70

3.4.2操作函数 70

3.4.3用法 72

3.4.4工厂函数 74

3.4.5应用于标准容器 75

3.4.6应用于桥接模式 76

3.4.7应用于工厂模式 77

3.4.8定制删除器 78

3.4.9高级议题 80

3.5 shared_array 81

3.5.1类摘要 81

3.5.2用法 82

3.6 weak_ptr 82

3.6.1类摘要 82

3.6.2用法 83

3.6.3获得this的shared_ptr 84

3.7 intrusive_ptr 85

3.8 pool库概述 85

3.9 pool 85

3.9.1类摘要 86

3.9.2操作函数 86

3.9.3用法 87

3.10 object_pool 88

3.10.1类摘要 88

3.10.2操作函数 88

3.10.3用法 89

3.10.4使用更多的构造参数 90

3.11 singleton_pool 91

3.11.1类摘要 91

3.11.2用法 92

3.12 pool_alloc 93

3.13总结 93

第4章 实用工具 95

4.1 noncopyable 95

4.1.1原理 96

4.1.2用法 96

4.2 typeof 97

4.2.1动机 97

4.2.2用法 99

4.2.3向typeof库注册自定义类 100

4.2.4高级议题 101

4.3 optional 101

4.3.1“无意义”的值 101

4.3.2类摘要 102

4.3.3操作函数 102

4.3.4用法 103

4.3.5工厂函数 104

4.3.6高级议题 105

4.4 assign 106

4.4.1使用操作符+=向容器增加元素 106

4.4.2使用操作符()向容器增加元素 107

4.4.3初始化容器元素 108

4.4.4减少重复输入 110

4.4.5与非标准容器工作 111

4.4.6高级用法 112

4.5 swap 113

4.5.1原理 113

4.5.2交换数组 114

4.5.3特化std::swap 114

4.5.4特化ADL可找到的swap 115

4.5.5使用建议 116

4.6 singleton 116

4.6.1 boost.pool的单件实现 117

4.6.2 boost.serialzation的单件实现 119

4.7 tribool 121

4.7.1类摘要 121

4.7.2用法 122

4.7.3为第三态更名 122

4.7.4输入输出 123

4.7.5与optional<bool>的区别 124

4.8 operators 125

4.8.1基本运算概念 126

4.8.2算术操作符的用法 127

4.8.3基类链 129

4.8.4复合运算概念 130

4.8.5相等与等价 131

4.8.6解引用操作符 133

4.8.7下标操作符 134

4.8.8高级议题 135

4.9 exception 136

4.9.1标准库中的异常 136

4.9.2类摘要 137

4.9.3向异常传递信息 138

4.9.4更进一步的用法 140

4.9.5包装标准异常 142

4.9.6使用函数抛出异常 143

4.9.7获得更多的调试信息 144

4.9.8高级议题 145

4.10 uuid 146

4.10.1类摘要 147

4.10.2用法 148

4.10.3生成器 150

4.10.4增强的uuid类 152

4.10.5与字符串的转换 153

4.10.6 SHA1摘要算法 154

4.11 config 155

4.11.1 BOOST_STRINGIZE 155

4.11.2 BOOST_STATIC_CONSTANT 155

4.11.3禁止编译器警告 156

4.11.4其他工具 157

4.12 utility 157

4.12.1 BOOST_BINARY 157

4.12.2 BOOST_CURRENT_FUNCTION 158

4.13总结 160

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

5.1 lexical_cast 163

5.1.1用法 164

5.1.2异常bad_lexical_cast 165

5.1.3对转换对象的要求 166

5.1.4应用于自己的类 166

5.2 format 167

5.2.1简单的例子 168

5.2.2输入操作符% 169

5.2.3类摘要 171

5.2.4格式化语法 172

5.2.5 format的性能 173

5.2.6高级用法 173

5.3 string_algo 175

5.3.1简单的例子 175

5.3.2 string_algo概述 176

5.3.3大小写转换 177

5.3.4判断式(算法) 178

5.3.5判断式(函数对象) 179

5.3.6分类 180

5.3.7修剪 181

5.3.8查找 182

5.3.9替换与删除 184

5.3.10分割 186

5.3.11合并 187

5.3.12查找(分割)迭代器 188

5.4 tokenizer 189

5.4.1类摘要 190

5.4.2用法 190

5.4.3分词函数对象 191

5.4.4 char_separator 192

5.4.5 escaped_list_separator 193

5.4.6 offset_separator 193

5.4.7 tokenizer库的缺陷 195

5.5 xpressive 196

5.5.1两种使用方式 197

5.5.2正则表达式语法简介 197

5.5.3类摘要 199

5.5.4匹配 200

5.5.5查找 203

5.5.6替换 204

5.5.7迭代 206

5.5.8分词 207

5.5.9与regex的区别 208

5.5.10高级议题 209

5.6总结 211

第6章 正确性与测试 213

6.1 assert 213

6.1.1基本用法 213

6.1.2禁用断言 214

6.1.3扩展用法 215

6.1.4 BOOST VERIFY 216

6.2 static assert 217

6.2.1用法 217

6.2.2使用建议 218

6.3 test 219

6.3.1编译test库 219

6.3.2最小化的测试套件 220

6.3.3单元测试框架简介 221

6.3.4测试断言 222

6.3.5测试用例与套件 223

6.3.6 测试实例 224

6.3.7测试夹具 226

6.3.8测试日志 228

6.3.9运行参数 229

6.3.10函数执行监视器 230

6.3.11程序执行监视器 233

6.3.12高级议题 234

6.4总结 236

第7章 容器与数据结构 239

7.1 array 239

7.1.1类摘要 240

7.1.2操作函数 240

7.1.3用法 241

7.1.4能力限制 242

7.1.5 array的初始化 242

7.1.6实现ref_array 243

7.1.7 ref_array的用法 244

7.2dynamic_bitset 245

7.2.1类摘要 245

7.2.2创建与赋值 247

7.2.3容器操作 248

7.2.4位运算与比较运算 249

7.2.5访问元素 249

7.2.6类型转换 251

7.2.7集合操作 251

7.2.8综合运用 252

7.3 unordered 253

7.3.1散列集合简介 254

7.3.2散列集合的用法 255

7.3.3散列映射简介 256

7.3.4散列映射的用法 256

7.3.5性能比较 257

7.3.6高级议题 259

7.4 bimap 260

7.4.1类摘要 261

7.4.2基本用法 262

7.4.3值的集合类型 263

7.4.4集合类型的用法 264

7.4.5使用标签类型 266

7.4.6使用assign库 267

7.4.7查找与替换 268

7.4.8投射 269

7.4.9高级议题 270

7.5 circular_buffer 271

7.5.1类摘要 271

7.5.2用法 272

7.5.3环型缓冲区 273

7.5.4空间优化型缓冲区 275

7.6 tuple 275

7.6.1最简单的tuple:pair 276

7.6.2类摘要 276

7.6.3创建与赋值 277

7.6.4访问元素 278

7.6.5比较操作 279

7.6.6输入输出 280

7.6.7连结变量 281

7.6.8应用于assign库 282

7.6.9应用于exception库 282

7.6.10内部结构 282

7.6.11使用访问者模式 283

7.6.12高级议题 285

7.7 any 287

7.7.1类摘要 287

7.7.2访问元素 288

7.7.3用法 289

7.7.4简化的操作函数 290

7.7.5保存指针 291

7.7.6输出 292

7.7.7应用于容器 293

7.8 variant 294

7.8.1类摘要 294

7.8.2访问元素 295

7.8.3用法 296

7.8.4访问器 297

7.8.5与any的区别 300

7.8.6高级议题 300

7.9 multi array 302

7.9.1类摘要 302

7.9.2用法 304

7.9.3多维数组生成器 306

7.9.4改变形状和大小 307

7.9.5创建子视图 308

7.9.6适配普通数组 310

7.9.7高级议题 311

7.10 proper_tree 314

7.10.1类摘要 315

7.10.2读取配置信息 316

7.10.3写入配置信息 318

7.10.4更多用法 319

7.10.5 XML数据格式 320

7.10.6其他数据格式 321

7.10.7高级议题 323

7.11总结 324

第8章 算法 327

8.1 foreach 327

8.1.1用法 328

8.1.2详细解说 329

8.1.3使用typeof 330

8.1.4更优雅的名字 330

8.1.5支持的序列类型 331

8.1.6一个小问题 332

8.2 minmax 332

8.2.1用法 333

8.2.2使用tuples::tie 334

8.3 minmax_element 334

8.3.1用法 335

8.3.2其他函数的用法 335

8.4总结 336

第9章 数学与数字 337

9.1 integer 337

9.1.1 integer_traits 337

9.1.2标准整数类型 339

9.1.3整数类型模板类 341

9.2 rational 344

9.2.1类摘要 344

9.2.2创建与赋值 345

9.2.3算术运算与比较运算 346

9.2.4类型转换 346

9.2.5输入输出 347

9.2.6分子与分母 347

9.2.7与数学函数配合工作 347

9.2.8异常 348

9.2.9 rational的精度 348

9.2.10实现无限精度的整数类型 348

9.2.11最大公约数和最小公倍数 353

9.3 CRC 353

9.3.1类摘要 354

9.3.2预定义的实现类 354

9.3.3计算CRC 355

9.3.4 CRC函数 356

9.3.5自定义CRC函数 357

9.4 random 357

9.4.1伪随机数发生器 358

9.4.2伪随机数发生器的构造 358

9.4.3伪随机数发生器的拷贝 359

9.4.4随机数分布器 360

9.4.5随机数分布器类摘要 361

9.4.6随机数分布器用法 363

9.4.7变量发生器 364

9.4.8产生随机数据块 365

9.4.9真随机数发生器 367

9.4.10实现真随机数发生器 368

9.5总结 369

第10章 操作系统相关 371

10.1 io_state_savers 371

10.1.1类摘要 372

10.1.2用法 372

10.1.3简化new_progress_timer 374

10.2 system 374

10.2.1编译system库 375

10.2.2错误值枚举 375

10.2.3错误类别 376

10.2.4错误代码 377

10.2.5错误异常 379

10.3 filesystem 380

10.3.1编译filesystem库 380

10.3.2类摘要 381

10.3.3路径表示 383

10.3.4可移植的文件名 384

10.3.5路径处理 385

10.3.6异常 387

10.3.7文件状态 388

10.3.8文件属性 390

10.3.9文件操作 391

10.3.10迭代目录 392

10.3.11实例1:实现查找文件功能 394

10.3.12实例2:实现模糊查找文件功能 395

10.3.13实例3:实现拷贝目录功能 397

10.3.14文件流操作 399

10.4 program_options 399

10.4.1编译program_options库 400

10.4.2概述 401

10.4.3选项值 403

10.4.4选项描述器 404

10.4.5选项描述器的用法 405

10.4.6分析器 407

10.4.7存储器 408

10.4.8使用位置选项值 409

10.4.9分析环境变量 411

10.4.10分组选项信息 412

10.4.11高级用法 413

10.5总结 417

第11章 函数与回调 419

11.1 result_Of 419

11.1.1原理 420

11.1.2用法 422

11.2 ref 422

11.2.1类摘要 423

11.2.2基本用法 424

11.2.3工厂函数 425

11.2.4操作包装 425

11.2.5综合应用 426

11.2.6为ref增加函数调用功能 427

11.3 bind 429

11.3.1工作原理 429

11.3.2绑定普通函数 430

11.3.3绑定成员函数 432

11.3.4绑定成员变量 433

11.3.5绑定函数对象 433

11.3.6使用ref库 434

11.3.7高级议题 435

11.4 function 437

11.4.1类摘要 437

11.4.2 function的声明 438

11.4.3操作函数 439

11.4.4比较操作 440

11.4.5用法 440

11.4.6使用ref库 441

11.4.7用于回调 442

11.4.8与typeof的区别 445

11.5 signals2 445

11.5.1类摘要 446

11.5.2操作函数 447

11.5.3插槽的连接与调用 448

11.5.4信号的返回值 449

11.5.5合并器 450

11.5.6管理信号的连接 452

11.5.7更灵活的管理信号连接 453

11.5.8自动连接管理 455

11.5.9应用于观察者模式 457

11.5.10高级议题 460

11.6总结 465

第12章 并发编程 467

12.1 thread 467

12.1.1编译thread库 468

12.1.2使用thread库 468

12.1.3时间功能 469

12.1.4互斥量 469

12.1.5线程对象 472

12.1.6创建线程 473

12.1.7操作线程 475

12.1.8中断线程 476

12.1.9线程组 479

12.1.10条件变量 480

12.1.11共享互斥量 484

12.1.12 future 485

12.1.13高级议题 488

12.2 asio 493

12.2.1概述 493

12.2.2定时器 494

12.2.3定时器用法 495

12.2.4网络通信简述 498

12.2.5 IP地址和端点 499

12.2.6同步socket处理 500

12.2.7异步socket处理 502

12.2.8查询网络地址 506

12.2.9高级议题 507

12.3总结 511

第13章 编程语言支持 513

13.1 python库概述 513

13.1.1 Python语言简介 514

13.1.2安装Python环境 515

13.1.3编译python库 515

13.1.4使用python库 516

13.2嵌入Python 517

13.2.1初始化解释器 517

13.2.2封装Python对象 518

13.2.3执行Python语句 520

13.2.4异常处理 521

13.3扩展Python 522

13.3.1最简单的例子 523

13.3.2导出函数 525

13.3.3导出重载函数 526

13.3.4导出类 528

13.3.5导出类的更多细节 530

13.3.6高级议题 532

13.4总结 534

第14章 其他Boost组件 537

14.1字符串和文本处理 537

14.2容器与数据结构 538

14.3迭代器 539

14.4函数对象与高级编程 539

14.5泛型编程 540

14.6模板元编程 541

14.7预处理元编程 542

14.8并发编程 542

14.9数学与数字 543

14.10 TR1实现 543

14.11输入输出 544

14.12杂项 544

14.13总结 546

第15章 Boost与设计模式 547

15.1创建型模式 547

15.2结构型模式 549

15.3行为模式 552

15.4其他模式 555

15.5总结 556

第16章 结束语 559

16.1未臻完美的Boost 559

16.2让Boost工作得更好 560

16.3工夫在诗外 563

附录A 推荐书目 565

附录B 网络资源 567

附录C C++标准简述 569

附录D STL简述 571

附录E ref_array实现代码 573