各图书勘误
<设计模式 --- 可复用面向对象软件的基础>
p.221
"7. 效果 -> 3) 增加新的...." 该段中倒数第二行, "而你不断地增加操作获修改算法,...". 应该是 "或".
<算法导论 第二版 中文版>
p.168
图 13-4 中, c) 情况的 1, 5, 8 结点是黑色, z所在结点标号为 2, 且为红色.
p.181
图 14-1 中, 根节点的儿子(左孩子)应该为17/12.
<Perl 语言入门>
p.185
use File::Basename 后面应该有个 ;
p.298
'$pos = ?1' 应改成 '$pos = -1'
一下 '?1' 同上, 都应改为 '-1'
<精通正则表达式> 第三版 中文版
原文: '请务必区分 (?>M)+ 和 (?M+). 前者放弃 M 创建的备用转台, 因为 M 不会制造任何状态, 所以这样做没什么价值. 而后者放弃 M+ 创造的未使用状态, 这样做显然有意义. ' (p.173)
修改: 红色粗体部分 '(?M+)' 应修改为 '(?>M+)'.
p.316
在本页中下部分有个表格, 其中第一行的第 3, 4 列为:
匹配成功时的 pop 值 匹配失败时的 pop 值
应该为:
匹配成功时的 pos 值 匹配失败时的 pos 值
<80x86 Assembly Language and Computer Architecture>
原文: Since the symbol string actually references its address, the expresssion string - $ is the length of string... (p.256)
应为: Since the symbol string actually references its address, the expresssion $ - string is the length of string... (p.256)
<Linux/UNIX 网络编程>
p.4
原文: 因受 16 位限制, 数据报文最长为 65536 (2^16) 字节, ...
应为: 因受 16 位限制, 数据报文最长为 65535 (2^16 - 1) 字节, ...
解释: 16 位二进制从 0 开始, 因此最高表示为 2^16 - 1.
p.32
原文:#include <strings.h>应为:
#include <string.h>
<C++ 沉思录> 中文版
错误有些多, 平均 1~3个/10 页. 当时没能上网, 无法记录.
<算法竞赛入门经典>
p.220 中间位置:
... 对拍时不能简单地用 fc 命令比较文本内容, ...
... 对比时不能简单地用 fc 命令比较文本内容, ...
<C++ 标准程序库 --- 自修教程与参考手册>
p.344
p.350
p.572
p.608
p.621
<七周七语言 --- 理解多种编程范型>
p.102
第一个字是 '贱'. (贱谍)
应该是 '间'. (间谍)
<程序员的数学>
p.64
课前对话中,
老师: "能被 2 整除的是整数"
改为:
老师: "能被 2 整除的是偶数"
<深入理解 C++11: C++11 新特性解析与应用>
p.48
红色线处: 1 的类型在 vc 12 以及 g++ 4.7.2 中, 都是 int 而非 const int.
粉色线处: 应修改为 `void TempFun<int>(int)`
p. 65
3-11 代码如下
实际上, 调用 `InitReset()` 后, `type` 的值是 2, 并非文中所述的 4.
p.68
代码 3-16:
根据原文的语境, 不应该有红线划去的部分.
p.77
第四行: 相对地, 非常量左值只能接受非常量左值对其进行初始化.
修改为: 相对地, 非常量左值引用只能接受非常量左值对其进行初始化.
p.84
应修改为 copy.
p.92
关于 explicit operator XXX() 的解释实在让人无法理解, 而且解释是错误的, 误导读者. 原文:
实际应该是:
如果我们把该方法用于代码清单 3-27 中, 可以发现我们预期的事情发生了, if (p) 可以通过编译, 因为 C++11 对 `if, 循环等逻辑` 做了放宽处理, 也就是说, `if (p)` 等价于 `if (static_cast<bool>(p))`. 因此通过了编译, 并且符合我们的预期. 然而 `p + pd` 没有使用 static_cast 进行显示的转换, 因此 p 以及 pd 无法转换为 bool 参与运算, 导致了编译失败.
p.132
第一段, 第 4 行: 而对于变量 m 和 n, 就变得非常有趣, 这里似乎是 auto 被替换成了 int, 所以 m 是一个 int * 指针类型, 而 n 只是一个 int 类型.
应改为: .... 这里似乎是 auto 被替换成了 int, 所以 m 是一个 const int * 指针类型, 而 n 是一个 const int 类型.
源代码为: `const auto *m = &x, n = 1;`.
p.142
文字第二行: ... 事实上, 规则 1 在 decltyp 类型推导中运用的最为广泛...
应改为: ... 事实上, 规则 1 在 decltype 类型推导中运用的最为广泛...
p.160
倒数第9 行: 这是由于 Visual C++ 总是使用无符号类型作为枚举的底层实现, ...
应该为: 这是由于 Visual C++ 总是使用有符号类型作为枚举的底层实现, ...
p.207
倒数第 5 行: 所以在多核心处理器上, 核心往往都有全套的寄存器来分别存储临时量, 而...
应改为: 所以在多核心处理器上, 每个核心往往都有全套的寄存器来分别存储临时量, 而...
p.291
条目 21: C++ 中 volatile 的对象不能作为隐式构造函数和隐式赋值函数的参数.
应该为: C++ 中 volatile 的对象不能作为默认构造函数和默认赋值函数的参数.
p.298
正文倒数第 3 行: 另外, ptr_fun 除了可以 ...., 此时返回值是 pointer_to_binary_function<Arg, Result>(f).
应该为: 另外, ptr_fun 除了可以 ...., 此时返回值是 pointer_to_unary_function<Arg, Result>(f).