【Primer】 阅读时发现的一些错误(第四版中文版)
看书的时候看到书上一些表达有问题,网上搜了下是作者之前就做了勘误的地方或者一些理解起来有问题的地方,在这里记下来 ^_^。(书是第四版中文版)
当然先发下英文勘误表的地址:
http://ptgmedia.pearsoncmg.com/images/9780201721485/Errata/Lippman_0201721481_Errata.html
-----------------------------------------
Page 269
表9-4中
iter1 += iter2
iter1 -= iter2 这是迭代器加减法的复合赋值运算:将iter1加上或减去iter2的运算结果赋给iter1。
个人觉得这么做没有意思啊,网上查下发现是写错了。原书作者在英文版里做了如下勘误:
Page 313: The description of the compound assignment operators in Table 9.4 incorrectly refer to iter2 as the right-hand operand; in each instance, iter2 should be replaced by n. The right-hand operand must be an integral value, not an iterator.
简而言之就是写错了,应该是 iter += n 和 iter -= n。两个指针相减再赋给一个指针实在没有什么含义。
Page 276
有段避免存储end操作返回迭代器的代码,这段代码虽然修正了可能出现的迭代器错误可是却是死循环。代码如下:
while (first != v.end()) { first = v.insert(first, 42); ++first; }
这段代码的用途是用于修正之前的存储end迭代器所带来的迭代器失效的问题,可是循环体中first迭代器指向新插入vector容器最前端的那个元素,而后++意味着一直指向最早的那个元素。所以程序要么一开始就first == v.end()而不进入循环体,要么就一直处于循环状态。
-----------------------------------------