关于迭代器和show函数
来源:7-4 图的算法框架
tobeabee
2021-10-31
老师,我们前面实现了迭代器,而这节课又实现了show函数,虽然对于稠密图来说两者的输出不太一样,不过应该可以通过修改迭代器的代码来完成show的功能吧;而且你前面说过迭代器有一些优点(比如在设计模式上),那show函数不会有相对应的缺点吗
写回答
1回答
-
如果你的意思是用迭代器去访问图中每一个节点的相邻接点,完全可以。
不过在课程后续你就会看到,我们设置迭代器的关键作用是:**在图的外部**,可以**快速**访问图中某一个节点的所有相邻接点,但是不暴露图内部的封装实现。用户不需要知道图是稀疏的还是稠密的,不需要知道图中是邻接矩阵还是邻接表,只需要调用 next,就可以获得下一个邻接的节点。
这里的关键词是:**在图的外部**。因为在图的内部,你作为开发者,可以直接拿到图中的所有信息,知晓图的所有结构,所以,现在的 show 函数的写法,是最简单的。
==========
show 本身不是标准的打印方式。在 C++ 中,标准的覆盖一个类的打印方式,是覆盖 << 方法。(近乎等价于 Java 中覆盖 toString 方法)。印象中课程中介绍过,为了不过多引入 C++ 的特性,在这里我们实现功能即可。除此之外,我个人不认为 show 有别的缺点。(或者你觉得有什么其他缺点,应该怎么写更好,可以提出来,我们讨论。)
继续加油!:)
012021-10-31
相似问题