August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
作为一个小的练习,我们建立两个链表:
不幸的是,我们犯了两个错误:Zeus是一位希腊的天神,而不是一位北欧的天神;希腊的战争之神是Ares,而不是Mars(Mars是他的拉丁/罗马名字)。我们可以修改它:
注意,我们是如何小心处理find()返回nullptr的情况的。我们认为在本例中这种情况下不可能发生(毕竟我们刚刚将Mars插入greek_gods中),但在实际的例子中某些人可能改变代码。
与之相似,我们可以将Zeus移入正确的神殿中:
你是否注意到了错误?它对你来说应该是一个相当微妙的错误(除非你已熟悉直接处理链接)。如果我们用erase()删除的恰好是norse_gods指向的Link会怎样呢?在这段代码中这种情况同样不会发生,但是为了编写可维护的优质代码,我们必须考虑这种可能性。
当我们修改第一个错误时,同时也修改了第二个错误:当我们在第一个希腊天神之前插入Zeus时,我们需要让greek_gods指向Zeus的Link。指针非常有用、非常灵活,但也是很微妙的。 ...