关于迭代器和show函数

来源:7-4 图的算法框架

tobeabee

2021-10-31

老师,我们前面实现了迭代器,而这节课又实现了show函数,虽然对于稠密图来说两者的输出不太一样,不过应该可以通过修改迭代器的代码来完成show的功能吧;而且你前面说过迭代器有一些优点(比如在设计模式上),那show函数不会有相对应的缺点吗

写回答

1回答

liuyubobobo

2021-10-31

如果你的意思是用迭代器去访问图中每一个节点的相邻接点,完全可以。


不过在课程后续你就会看到,我们设置迭代器的关键作用是:**在图的外部**,可以**快速**访问图中某一个节点的所有相邻接点,但是不暴露图内部的封装实现。用户不需要知道图是稀疏的还是稠密的,不需要知道图中是邻接矩阵还是邻接表,只需要调用 next,就可以获得下一个邻接的节点。


这里的关键词是:**在图的外部**。因为在图的内部,你作为开发者,可以直接拿到图中的所有信息,知晓图的所有结构,所以,现在的 show 函数的写法,是最简单的。


==========


show 本身不是标准的打印方式。在 C++ 中,标准的覆盖一个类的打印方式,是覆盖 << 方法。(近乎等价于 Java 中覆盖 toString 方法)。印象中课程中介绍过,为了不过多引入 C++ 的特性,在这里我们实现功能即可。除此之外,我个人不认为 show 有别的缺点。(或者你觉得有什么其他缺点,应该怎么写更好,可以提出来,我们讨论。)


继续加油!:)

0
1
tobeabee
懂了,谢谢老师!
2021-10-31
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程