作者fluteoner (NCU_CS)
看板C_and_CPP
标题[情报] C++ Primer 第三版的bug
时间Thu Jul 20 18:10:24 2006
我好像抓到了两个bug, 请各位大大看一下对不对
在5.11的List实作中(侯捷版232页)的remove_front()函数
原程式码如下:
inline void ilist::remove_front()
{
if(_at_front)
{
ilist_item* ptr=_at_front;
this->_at_front=_at_front->next();
this->bump_down_size();
delete ptr;
}
}
但是当串列只剩下一个Node时,
移除的话_at_end会指向已经delete的Node,
所以我把他加了一行修改如下
inline void ilist::remove_front()
{
if(_at_front)
{
ilist_item* ptr=_at_front;
this->_at_front=_at_front->next();
this->bump_down_size();
if(_at_end==ptr) _at_end=NULL;//书上的bug,加此行更正
delete ptr;
}
}
第二个是reverse()函数(侯捷版P236~P237)的小bug
原程式码的最後一行
_at_front->next(prev);
如果是空的串列,这行会错
所以修改成
if(_at_front!=NULL)
{
_at_front->next(prev);
}
有错请指正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.134.250
1F:推 drkkimo:书为了解说方便可能会简化程式码 但本文也可以参考 07/20 19:36
2F:推 petertc:btw这本4/e中文版什麽时候要出呀:q 07/20 19:48
3F:推 aoc90058:至少年底会出吧 我觉得。不然就请内线帮忙催促催促XD 07/21 00:14
4F:推 fluteoner:第四版会差很多吗?? 怎麽这麽期待 07/21 03:03
5F:推 cplusplus:我先期待第五版好了 应该会是在讲0x XD 07/21 11:21
6F:推 pcjustin:超期待,看过英文版,内容排版差多了 07/21 15:37
7F:→ pcjustin:如果急得看中文版,其实大陆已经有不知名翻译版出来 = = 07/21 15:38
8F:推 aoc90058:如果单从英文版来看,动向改变蛮大的,改变的相当不错 07/21 15:41
9F:→ petertc:那里有内线XD 07/21 22:45
10F:推 badsan:原来出到第三版了喔.我还再看第一版.~_~..看来要换书了.. 07/23 17:35
11F:推 DJWS:英文版第四版已经出了唷! 字体和排版都很好 ^^ 07/23 18:09