Boost程序库完全开发指南

当前位置:首页 > 网络编程 > 编程语言与程序设计 > Boost程序库完全开发指南

出版社:电子工业出版社
出版日期:2010-9
ISBN:9787121115776
作者:罗剑锋
页数:578页

章节摘录

插图:

前言

Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉。1996年我上大学最开始学的是Pascal,不得不说,Pascal的严谨程序风格确实很适合作为一门教学语言,然而用于实际开发就不那么合适了(直到出现Delphi)。由于当时学校并未开设C语言课程,因此在Pascal课程结束后我就买书自学C/C++语言,并在次年报名国家计算机水平考试,靠着一点点编程和考试的“天分”获得了高级程序员资质(当年很热衷考级考证,后来就“淡定”多了)。虽然有了资格证,但我仍然算是个C++的初学者,对于C++的认识还处于C的面向过程和简单的基于对象层次上。新千年伊始我考入了北京理工大学就读研究生,因为跟导师做项目开始接触STL与C++标准库,大概是2005年从1.33版结识了Boost,这才真正领略了C++的精髓。那段时期Java和C#正在国内大行其道,C++则势单力薄,有关STL和C++标准的技术书籍寥寥无几,而讲解Boost的书更是为零,故对Boost的学习基本只能靠自己的摸索与实践。好在Boost自带的文档相当丰富(虽然看全英文的资料十分辛苦),而且源码也写得比较清晰规范,在熟悉了STL的基础上学习Boost倒也并不算太难。但Boost的一个最大的特点就是“庞大”,功能组件众多,要想把它全部装进脑子里融会贯通基本上是不可能的,使用时需要经常查阅英文文档,相当的麻烦。因此,在学习的过程中,我逐渐产生了编写学习笔记的想法。一开始只是一个简单的纯文本文件,记录了一些使用经验的片断,随着积累的不断增加,纯文本形式已经不能够满足知识整理的需求了,于是我又把这些文字迁移到了Word文档里,把使用经验分类编目,加以较系统地归纳梳理。慢慢地,这份学习笔记居然有了上万字的规模,成为了一份很好的Boost备忘参考,在日常的开发工作中给了我很大的帮助——就像《设计模式》一书中所说的那样,捕获了很多使用Boost解决问题的实践经验,避免了重复发现。不过,这份资料一直是仅限于我个人使用,属于“自娱自乐”的作品,从未示人。时间一晃到了2010年1月份的某天夜里,不知道是什么原因我忽然失眠了,躺在床上翻来覆去怎么也睡不着。突然,一个念头闯入了脑海:把Boost开发经验整理出版吧,让更多人能够分享这些知识,正所谓“独乐乐,与众乐乐,孰乐?”。这个大胆的想法的出现让我那天的失眠又延长了几个小时——关于书的各种构想在头脑中“肆虐横行”。随后的几天里我就把这个想法付诸行动了,虽然以前也写过并发表很多文章,也在网上印刷了几本个人文集,但出版正式的书还是第一次。在把学习笔记进一步整理完善,编写出较完整的结构和一个样章后,我就开始联系出版社了。当初并没有多大的信心,毕竟我这个作者名不见经传,也没有什么资历、背景和名气(而且还是个“网盲”,从未跟随潮流开个人博客)。很幸运,发出的第一个E-mail就是电子工业出版社,而且编辑也在第一时间回复了我,这才给了我以持续写作完成全书的动力。

内容概要

罗剑锋(网名Chrono),1996年就读东北某大学,1997年开始接触C/C++。1998年参加全国计算机等级考试,获高级程序员资质。2003年毕业于北京理工大学,获计算机专业硕士学位。目前供职于某部委下属软件公司,任项目经理,主要研究方向为C/C++、设计模式、密码学、数据库、嵌入式系统开发。业余爱好是阅读、欣赏音乐和旅游。

书籍目录

目录
第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 VisualStudio 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_display
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 编译配置宏
55
2.8.2 格式化时间
55
2.8.3 本地时间
56
2.8.4 序列化
58
2.9 总结
58
第3章 内存管理
61
3.1 smart_ptr库概述
61
3.1.1 RAII机制
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
120
4.7.1 类摘要
121
4.7.2 用法
122
4.7.3 为第三态更名
122
4.7.4 输入输出
123
4.7.5 与optional的区别
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 标准库中的异常
137
4.9.2 类摘要
137
4.9.3 向异常传递信息
139
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 匹配
201
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.2 dynamic_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
261
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 使用访问者模式
284
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 应用于容器
294
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 property_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
329
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 用法
334
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 伪随机数发生器的构造
359
9.4.3 伪随机数发生器的拷贝
360
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
400
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 存储器
409
10.4.8 使用位置选项值
409
10.4.9 分析环境变量
411
10.4.10 分组选项信息
412
10.4.11 高级用法
414
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 总结
464
第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

编辑推荐

《Boost程序库完全开发指南:深入C++"准"标准库》:Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉,是每位C++程序员的必备工具。《Boost程序库完全开发指南:深入C++"准"标准库》基于Boost1.42版,介绍了其中所有的99个库,并且详细深入地讲解了其中数十个库,同时实现了若干颇具实用价值的工具类和函数,可帮助读者迅速地理解掌握Boost的用法并用于实际的开发工作中。

作者简介

《Boost程序库完全开发指南:深入C++"准"标准库》内容简介:Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉。
它由C++标准委员会部分成员所设立的Boost社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。
《Boost程序库完全开发指南:深入C++"准"标准库》基于Boost1.42版,介绍了其中的所有99个库,并且详细深入地讲解了其中数十个库,同时实现了若干颇具实用价值的工具类和函数,可帮助读者迅速理解掌握Boost的用法以及在实际应用开发工作中。
《Boost程序库完全开发指南:深入C++"准"标准库》内容丰富、结构严谨、详略得当、讲解透彻,带领读者领略了C++的最新前沿技术,相信会是每位C++程序员的必备工具书。

图书封面


 Boost程序库完全开发指南下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计16条)

  •     刚刚接触boost,发现这是一本很好的工具书籍,讲的很好很实用,例子也比较典型和代表性,正在学习中,并且已经体验到利用boost开发带来的益处,很不错哦
  •     只看了书上的thread,date_time等有数的几个章节,体验如下:优点:1. 目录很全,罗列出来了boost中实现的几乎所有的跨平台的组件;2. 初碰boost时,可以大大缩短安装,编译,编写示例代码的时间.缺点:1.浏览目录的次数比浏览内容的次数还要多,一般是根据目录再翻过头去看boost的在线文档.书中内容深度不够;可能和书籍的定位有关,毕竟如果要求有深度,一个组件就够出一本书了.2.浏览中找不到重点.这么庞大的库,如果要求面面俱到是绝对不可能的.总要有个侧重点.比如shared_ptr中的大部分函数的设计初衷是替代原始指针,顺着这条路去熟悉shared_ptr的源代码自然会很容易.再比如shared_ptr中会列出指针类型的Common Requirements,我觉得这个东西在实际应用时十分重要.应该重点,花一些篇幅说明.
  •     赖勇浩(http://laiyonghao.com)作为一个时不时要用一点 C++ 的程序员,我常常自嘲为斯德哥尔摩综合症患者,用 Python 写着懒散的代码时,会怀念以前编写 C++ 代码的那种被虐感。但当真正要写一些 C++ 代码的时候,又会怀念 Python 带给我的自在,这也许就是所谓的由奢入俭难了。幸好有 Boost,有时候它甚至让我觉得其实 C++ 也可以写得如同 Python 般雅致。大概是因为 Boost 的组委们一直以来的高要求,好库,好文档,所以长期都是阅读在线文档作为学习的途径。后来也有国人翻译了一本 Boost 的书,书很棒,但对应的 Boost 的版本就比较过时了,而且语言转换过程中也有不可避免的信息流失,令人扼腕。这几年,alai 等人自发组织起来,翻译了 Boost 的全部文档和一些相关书籍,而且对版本的跟进也是比较及时的,是不可多得的好材料。尽管有如此方便的资源,我还是比较期待有一本国人写的,Boost 相关的书,我相信国人对我们使用的 C++ 风格和水平有更好的理解,能够写出更适合我们真实需求的书。所以后来手上才有这本《Boost程序库完全开发指南:深入C++"准"标准库》(以下简称《Boost 指南》)。虽然我期待一本国人写的 Boost 相关的书,但是当我看到这本书的目录时,我不由地鄙视起来:太多东西了,像流水账,甚至可能是直接抄袭官方文档。当书到手后,我发现它超越了我的期待,作者的苦心孤诣不说,至少抄袭完全是不存在的。第 0、1 两章把读者引入 Boost 的新新世界,讲述了本书的基本结构和阅读指南,然后是 Boost 的安装与编译,给了初手一条向上的梯子。本书可以说是详略得当,作为一作定位为手册+介绍的书,做到这一点不太容易。编排由浅入深,而又曲径通幽,比如以“时间与日期”作为 hello boost 之例,与当前市面上的 Boost 大有不同(通常是以 shared_ptr 为始),因为“时间与日期”是大家天天接触的概念,接受起来容易不少,让人感觉 Boost 真的有用,解决实际问题,这样读者对 Boost 的兴趣就被勾了起来,再往下读,也不那边怕艰难了。其实按我的设想,我觉得接下来就讲一下字符串和各种容器,比如 tuple、unordered、bimap、circular_buffer 之类的,应该更好一些;可惜这本书还是接下来马上就开始讲内存管理,介绍 shared_ptr 了,不能免俗啊。这本书的另一个特色就是例子都是作者专心构造的,尽显作者给足了心想做本好书。比如讲 date_time 库的那一章,构造了一个信用卡的免息期的计算例子,例在身边,感受新鲜,我当时读到这个例子觉得作者真可算得上匠心独运了。虽然如此,但仍然要指出一下因为作者可能不太喜欢参考他人的一些例子(太怕被人说抄袭而刻意避嫌?),也有一些我觉得不太好的例子,比如讲 operators 时,那个 class point,居然支持大小比较和加减操作,多少有点算概念没理清。如果实在要用这个例子,我觉得也许叫 class vector3d(三维矢量)更好一些。最后,讲一下这本书我觉得比较不喜欢的地方。在我看来,既然读者都已经开始学习、使用 Boost 了,想必基础较好、自我学习能力较强,《Boost 指南》仍然定位在介绍和手册这一层次,我觉得多少让人觉得这本书写得啰嗦、写得不够深入。虽然全书都是作者自己的经验和学习成果,例子也是精心构建,但读来仍然不会有胜于官方文档的感觉。关于 Boost 的书,我更期待的也许是如何以 Boost 来解决一些经典的问题,向读者展示 Boost 的强大与实用的《Boost Cookbook》。从全书来看,作者 C++ 经验相当丰富,这本书完全没有展示出作者的实际水平,很期望作者能够加加油,换换思路,带给我们一本《Boost Cookbook》。最后两章,Boost 和设计模式、结束语,是画龙点睛之笔。前者对 GoF 的 23 个设计模式和后来总结的 3 个设计模式与 Boost 结合起来,点破 Boost 中的哪些库使用了哪个设计模式,可以说是点破了 Boost 库精巧灵活之谜,也让设计模式的学习者、爱好者有一个可观摩的模式的应用与实现的典范。这是在其它书中不曾见的。而在结束语中,作者直言 C++ 和 Boost 仍然有很多不足,但我们也不必拘泥于此,我们要有开阔的眼界,用好工具解决好问题,编程,功夫在诗外。作者最后讲到一句话,因为我也曾说过类似的言论,使我顿生戚戚,所以借来作为我的书评的结束吧:……生活中不只有 C++、代码和编程,还有更多的东西值得我们去体味,朋友、亲人、爱人更值得花时间与他们在一起。走出办公室,离开计算机,去亲近大自然,享受美餐,散散步,打打球……拥有美好的生活才能够创造出完美的程序。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lanphaday/archive/2011/04/06/6303944.aspx

精彩短评 (总计59条)

  •     经典不必多说哦
  •     要说抄袭,那绝对不是这本书的特征。毕竟boost的书很少,国外也不多,在C++领域这算是非常新的技术了。总的来说很满意,读过几十页电子版才买的。此书带有些大师风范,作者对boost理解非常深入,写此书也能看出来下了很大功夫。表述中肯,没有无谓的评价。风格上属于文集类型,所以看起来内容有点散,不过还好。作者特别注重“离开电脑阅读”,这一点非常推崇。装订质量还行,... 阅读更多
  •     这书看看,对Boost有个大致理解,知道可以做什么就行了。真正开搞,还是看官方手册吧。而且不推荐书中的STLPort,如果是VC6的时代,用用还是可以,但是到了VS2008的时代,VS的STL的性能已经不逊于STLPort了。
  •     了解 boost 的入门书,例子都很明了
  •     好有难度!!!
  •     看过一次,仅仅是翻阅了解而已,以后再看
  •     这书吧,看看,对boost大概有个了解就行了。。。要真正地在项目中使用boost时不建议参考该书。该书中有些地方说得不明不白很容易让人误解,有的就完全搞错了,比如pool一章;有的该说的没有说看了也无法正确使用。而且,书的章节结构也不太好(我希望能是侯捷翻的那本《C++标准程序库—自修教程与参考手册》那样,能让我快速开始,看这书时总是想找什么就找不到什么,非要看完一大节才知。。。)最重要的是,本书只是介绍性的,请将之作为中文翻译文档看待,不要期望看完后就能对boost数一数二能完全理解boost神马的。总之,我不推荐此书。。。重要的时候看文档吧。。。
  •     太初级了一点
  •     介绍Boost C++库。比较详细,但有些库介绍的内容有点少。
  •     将Boost的库进行了比较系统介绍。入门指南还是非常好的。
  •     介绍,示例,高级应用,每章都是这样的体系,适合做字典用。可能由于作者个人的背景原因,我自己最感兴趣的数值部分谈的特别少。
  •     喜欢亚马逊的服务,支持除了在亚马逊上买不到的书,我都会一直在亚马逊上购买服务好,送货快,质量也不错当然对于这本书,其实一般般拉,没讲到多少精髓的东西。当然适合我们接触boost的人阅读
  •     没有全看完。关于Boost:一个你曾经发明过的轮子、想发明的轮子、以及比你想象的更好的轮子的集合。关于本书:简单有示例,适合初学者。不过boost的文档有中文翻译版,也是简单有示例,所以我没再看这本书。
  •     很棒的一本书,颗粒度很好的介绍了boost库,解决了我在C++的大部分疑惑。
  •     对boost库有个大概的了解吧,还是要去看源码。模板的大量运用是比较印象深刻的部分。
  •     Boost是C++中很强大的一个库,但是有时候在写代码时候比较困惑不知如何利用这样强大的功能,目前我正在读这本书,觉得是一本很好的工具书。希望更多的C++爱好者能够像我一样从中吸收到自己想要的知识!——转自网上书评
  •     这个书,挺有用的。Boost确实神奇,不过会用就好。深入搞泛型,还得下更多功夫。
  •     遇到不少人说,boost不要用,模板不要用,异常不要用,RAII搞不懂。我只想说,你们还是在用C++吗?
  •     先读《Boost程序库完全开发指南 : 深入C++“准“标准库 》再读这本。
  •     案头手册++
  •     对各种库有入门的介绍,具体运用还是要看boost文档
  •     晚上12点多下的单,没想到现在就已经拿到了,这次卓越效率比以前高了许多啊。估计货应该是在西安库房放着的。说点有用的:书还没有细看,具体写的好不好还不敢乱说。但是我需要向大家说明,这本书是侧重于应用的,并没有像许多讨论STL的书那样讲解实现,应该说是完全没有(至少我没有看见)。... 阅读更多
  •     经典boost书
  •     Boost的书比较难找,这本国内的还是写得挺详尽的,看看人家国外Introduction to the Boost C++ Libraries,还分上下卷,就是不知道内容怎么样。
  •     入门了解不错,实例很多,深度不够。
  •     可以籍这本书了解boost的全貎
  •     boost的参考手册,写的不错,我比较喜欢这种写法。
  •     手册类型的书,电脑上看boost文档眼睛受不了可以翻这本书。
  •     书还行,价格高些
  •     以前很快的翻过一次,毕竟是国内唯一一本比较正式的介绍boost的书,还是值的推荐的
  •     值得学习和一试,对我们编程有绝对的好处。
  •     工具书,随手翻
  •     书不错,适合用来学习boost库的使用。各个地方都是点到为止,不过作为初学boost库的使用已经足够了。 推荐阅读。
  •     讲的不深,但挺全。当做参考书看看还不错,尤其是懒得看那么多的官方文档的时候,看看这本书的例子就基本上可以用了。
  •     标准工具书,无所谓好坏。错别字不多倒是真的。
  •     接触BOOST时间不长,一直是在网上查找相关资料,这下买一本,用的时候查的方便了。
  •     读的太晚了,内容和c++11有重叠
  •     快速入门还是值得看的
  •     为毛要有这种教材,用到再查更好
  •     好书必顶
  •     中文的boost书不多,还不如看文档
  •     作者还对C++标准有点水平。其实嘛,这本书值得看的地方就asio, smart pointer ,并发编程那块。
  •     C++ Boost
  •     质量不错,内容很详细,就是编译boost库的时候,可能是写书时间的原因,我照书上的方法编译不了boost,后来在网上找到方法。
  •     当年英语不好,这本书还是帮助挺大的。现在能直接读英文文档了,这种书意义就不大了,不如去看官方文档,更新还更快。
  •     在老东家的时候看的,用到哪里看到哪里。可做为工具书
  •     深入的不够,还是稍浅了一些,适合初学者看
  •     现代c++
  •     粗略的浏览了一下,感觉Boost这东西如果不是项目要用,光看是看不会的。
  •     谢特,这本书丢了还得还图书馆一本。。
  •     后来就懒得看了。
  •     不错了,对于新手来说有本这样的中文书讲boost的真的很不错.
  •     少了点深究
  •     cookbook 类型,走马观花看看,对 boost 有一个初步整体印象,就基本达成这本书的使命了,精要部分,例如 asio,其实讲的不够好
  •     很好的入门指引
  •     其实不错了,能够快速浏览一遍boost库,知道大概用途。当然具体的使用还是推荐直接看文档。
  •     个人喜欢在amazon买东西
  •     主要看了智能指针、函数对象bind、多线程和asio网络编程,这本书对于boost入门很有帮助,要想深入学习某一个方面的库可以看官方文档。
  •     对BOOST的介绍还是很全面的,而且易懂,至少对C++和泛型编程熟悉的人,看懂该书没有丝毫压力。PS,据说最近概述又出了修订版。
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024