⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 勘误:c++ primer中文版.txt

📁 C++ Primer 第三版中文版
💻 TXT
📖 第 1 页 / 共 4 页
字号:
日期:2001/07/23

■p289, L1(英文版勘误)
原文:

注意,第二个 iterator 所指的字元并不涵盖於删除范围之内。
erase() 的第三型式需要一个 iterator 做为引数,此 iterator 标示出一个
起始位置,从该位置之後直到字串结束为止的所有字元都会被移除。例如:
name.erase( name.begin() + 4 );
会使 name 变成 "Anna"。

更正:

注意,第二个 iterator 所指的字元并不涵盖於删除范围之内。这意味我们
产生出来的是 Annaabelle 而不是 Annabelle。於是,我使用 erase() 的
第三型式,以一个 iterator 做为引数,标示出欲移除的字元位置。
我把 endPos 当做引数,用以删除多馀的第二个 'a':
name.erase( endPos );
现在我们的 name 变成了 "Annabelle"。

日期:2001/07/23

补充:jau_lueng su 指出,以上更正後的叙述有误。
检讨:的确,lippman 在此处挖东补西,写得不好。
重新更正:
  注意,第二个 iterator 所指的字元并不涵盖於删除范围之内。这意味我们
  产生出来的是 Annaabelle 而不是 Annabelle。於是,我使用 erase() 的
  第三型式,以一个 iterator 做为引数,标示出欲移除的字元位置。
  name.erase( name.begin() + 4 );
  现在我们的 name 变成了 "Annabelle"。
日期:2001/10/07


■p289, L12(英文版勘误)
原文:string_object.insert( pos+1, 's' );
更正:string_object.insert( pos+1, "s" );
日期:2001/07/23

■p289, L-13(英文版勘误)
原文:posEnd // end position within new_string
更正:posEnd // number of characters to copy
日期:2001/07/23

■p289, L-1(英文版勘误)
原文:s3.assign( s1, 4 );
更正:s3.assign( s1, 0, 4 );
日期:2001/07/23

■p290, L6(英文版勘误)
原文:s3.append( s2, 4 );
更正:s3.append( s2, 0, 4 );
日期:2001/07/23

■p290, L8(英文版勘误)
原文:s3.assign( s1, 4 ).append( ' ' ).append( s2, 4 );
更正:s3.assign( s1, 0, 4 ).append( ' ' ).append( s2, 0, 4 );
日期:2001/07/23
补充:jau_lueng su 指出,append() 只能接受字串而非字元,上式应改为:
更正:s3.assign( s1, 0, 4 ).append( " " ).append( s2, 0, 4 );
日期:2001/10/07

■p293, L18(英文版勘误)
原文:hmm.replace( position, 4, 'x', 4 );
更正:hmm.replace( position, 4, 4, 'x' );
日期:2001/07/23

■p325, L-1(英文版勘误)
原文:inline bool iStack::size() { return _stack.size(); }
更正:inline int  iStack::size() { return _stack.size(); }
日期:2001/07/23

■p456, L-6(英文版勘误)
原文:void main() {
更正:int  main() {
日期:2001/07/23

■p463, L-4(英文版勘误)
原文:void func( int *parm ) {
更正:int  func( int *parm ) {
日期:2001/07/23

■p467, L9, L10(英文版勘误)
原文:format( a1 );  // calls format( int )  译注:a1 请见上一页
      format( a2 );  // calls format( unsigned int )  译注:a2 请见上一页
更正:format( e1 );  // calls format( int )  译注:e1 请见上一页
      format( e2 );  // calls format( unsigned int )  译注:e2 请见上一页
日期:2001/07/23

■p470, L-10(英文版勘误)
原文:void func( int *pi, string *ps ) {
更正:int  func( int *pi, string *ps ) {
日期:2001/07/23

■p472, L4(英文版勘误)
原文:void manip( int i1, int i2 ) {
更正:int  manip( int i1, int i2 ) {
日期:2001/07/23

■p605, L13(英文版勘误)
原文:remove_if_copy()
更正:remove_copy_if()
日期:2001/07/23

■p616, L17(英文版勘误)
原文:void checkRange( int, int );
更正:bool checkRange( int, int );
日期:2001/07/23

■p870, L-6(英文版勘误)
原文:for ( ; ix < _size  ++ix )
更正:for ( ; ix < _size; ++ix )
日期:2001/07/23

■p1049, L-7(英文版勘误)
原文:range_error exception
更正:out_of_range exception
日期:2001/07/23

■p1102, L16(英文版勘误)
原文:函式名称中的 g 表示重新指位动作是为了取得(getting)字元
      (用於 ofstream class object),p 则表示重新指位动作是为了放置
      (putting)字元(用於 ifstream class object)。
更正:函式名称中的 g 表示重新指位动作是为了取得(getting)字元
      (用於 ifstream class object),p 则表示重新指位动作是为了放置
      (putting)字元(用於 ofstream class object)。
日期:2001/07/23


================================================================
以上已於五刷(2001 修订版)更正完成。

以下暂请读者自行更正:
(注意,Lm 表示第 m 行,L-n 表示倒数第 n 行)

■p1087, L-8(英文版错误)
原文:const lineSize = 1024;
更正:const int lineSize = 1024;
感谢:jjhou
日期:2001/09/25

■p999, L20(补充)
原文:Panda::Panda( string name, bool onExhibit=true )
补充:请在行後加上注解: // 有些编译器不允许在此再次设定预设值 true
感谢:jjhou
日期:2001/12/22

■p1164, L14(英文版错误)
原文:stable_sort(...);
更正:partial_sort(...);
感谢:jjhou
日期:2001/12/31

■p1165, L1(英文版错误)
原文:stable_sort(...);
更正:partial_sort_copy(...);
感谢:jjhou
日期:2001/12/31

■p271, L15(英文版错误)
原文:for ( ; iter != buffer.end(), ++iter)
更正:for ( ; iter != buffer.end(); ++iter)
感谢:Solstice
日期:2002/01/25

■p561, L4(英文版错误)
原文:enum EHstate { noErr, zeroOp, negativeOp, severeError };
更正:enum EHstate { noErr, zeroOp, negativeOp, severeErr };
感谢:jjhou
日期:2002/02/15

■p322, L14(中译本处理错误)
原文:while ( intStack.empty() == false )
更正:while ( intStack.empty() == false ) {
感谢:hzm21
日期:2002/02/15

■p520, L5(英文版误)
原文:// (introduced in Section 2.4)
更正:// (introduced in Section 2.5)
感谢:hzm21
日期:2002/02/15

■p525, L-5(多一个字)
原文:此一呼叫并并没有其他候选函式
更正:此一呼叫并没有其他候选函式
感谢:hzm21
日期:2002/02/15

■p611, L5(错别字)
原文:导至
更正:导致
感谢:hzm21
日期:2002/02/15

■p211, L13(错别字)
原文:然而冒号(;)不能省略
更正:然而分号(;)不能省略
感谢:Uranus
日期:2002/03/02

■p259, L17(错别字)
原文:并同时在 vector 中安插 10,000 个元素什时,
更正:并同时在 vector 中安插 10,000 个元素时,
感谢:Uranus
日期:2002/03/28

■p362, 练习 7.12 题目 (易起误会,重新修润)
原文:请将 factorial() 重写,使它成为一个非递回函式,
      而是一个迭代(iterative)函式。
更正:请重写 factorial(),使它不再是个递回(recursive)函式,
      而成为一个迭代(iterative)函式。
提醒:如果您有《C++ Primer 题解》,也请一并修正(p142)
感谢:yeka
日期:2002/05/23

■p653, L17 (误译)
原文:我们也可以在 member function 指标型别中宣告函式叁数和传回值型别,
      还可以指定预设引数。
原文:我们也可以将 member function 指标型别作为函式宣告中的叁数和传回值型别,
      还可以指定预设引数。
感谢:steven guan
日期:2002/05/31

■p200, L19(中译本处理错误)
原文:for ( int ix = 0; ix < size; ++ix )
原文:for ( int ix = 1; ix < size; ++ix )
感谢:Aaron
日期:2002/05/31

■p239, L3(原书错误)
原文: : _at_front(0), _at_end(0)
修改: : _at_front(0), _at_end(0), _size(0)
说明:如果没有这麽做,copy 之後,新的 list 的元素个数会出错
感谢:jjhou
日期:2001/01/15
备注:本错误先前已列出,应於第五刷(2001修订版)纸本上修改完成。
      但疏忽未改,特再次提醒。

■p1000,L13(漏印)
原文:: ZooAnimal( name, onExhibit, "Bear" )
更正:: ZooAnimal( name, onExhibit, "Bear" ),
提示:最後加一个逗点
感谢:jaulueng
日期:2002/06/01

■p1000,L-7(英文版笔误)
原文:Endangered::critical )
更正:Endangered::critical ),
提示:最後加一个逗点
感谢:jaulueng
日期:2002/06/01

■p260,L-3
原文:为了定义一个 container object(循序容器),
更正:为了定义一个循序容器物件本身,
感谢:Thomas Tam
日期:2002/06/02

■p589~p592(英文版错误一大堆)
0. 这四页时而使用 int,时而使用 Int(定义於 p589 的一个 class)。
   中文版第一刷都是正确的,但後来误加修改,反而不正确了。以下标记出所有
   用到 Int(而非 int)之处:
   p589,L-6  Int Ival1, IVal2, Ires;
   p590,L-7  modulus<Int> IntModulus;
   p590,L-1  Ires = UnaryFunc( negate<Int>(), Ival1);
   p591,L-9  less<Int> IntLess;
   p592,L15  logical_not<Int> IntNot;

1. p589, class Int 应添加以下 member function :
     operator int() const { return _val; }  // 转换函式
   这是因为 p590 之模数(Modulus)运算:
     modulus<Int> IntModulus;
     Ires = IntModulus(IVal1, IVal2);
   会唤起 Int::operator%(int), 但叁数 Int IVal2 需先转换为 int 才行。
   所以需要一个 Int -> int 的转换函式如上。

2. p589,L-8, p590,L-15, p591,L10 各有 complex,应改为诸如 complex<double>
3. p591 之每一种运算的最後一行均应加上 bind2nd(),例如
   equal_to<string>(), sval1
   应改为:
   bind2nd(equal_to<string>(), sval1)
   再如:
   not_equal_to<string>(), sval1
   应改为:
   bind2nd(not_equal_to<string>(), sval1)
   依此类推。
4. p591 每一种运算中的第一个运算均应传回 bool,例如
   sres = stringEqual( sval1, sval2);
   cres = complexNotEqual( cval1, cval2);
   ires = intGreater( ival1, ival2);
   ...
   书上却以 bool 以外的型别来接受运算结果。虽然(也许)可自动转换,但没有意义。
   我建议最好准备一个 bool 变数:
   bool bres; // 加在 p589 下方原 6 个变数定义处。
   然後将上述运算都改为:
   bres = stringEqual( sval1, sval2);
   bres = complexNotEqual( cval1, cval2);
   bres = intGreater( ival1, ival2);
   ...
5. p592,L11,L12 之 intSub 应改为 intOr
6. p592 的 ■Logical Not 运算下面第二行:
   Ires = IntNot( IVal1, Ival2 );
   应改为
   Ires = IntNot( IVal1 );
7. p592 每一种运算中的第一个运算均应传回 bool,例如
   ires = intAnd( ival1, ival2 );
   ires = intOr( ival1, ival2 );
   Ires = intNot( Ival1 );   // 此式只需一个叁数,见上述第 6 点)
   ...
   书上却以 bool 以外的型别来接受运算结果。虽然(也许)可自动转换,但没有意义。
   我建议最好准备一个 bool 变数(如上述第 4 点),然後将上述运算都改为:
   bres = intAnd( ival1, ival2 );
   bres = intOr( ival1, ival2 );
   bres = intNot( Ival1 );   // 此式只需一个叁数,见上述第 6 点)
感谢:jjhou
日期:2002/09/14

■p1102,L14

原文:
更正:
感谢:
日期:2002/06/02


--- the end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -