以下代码显示在可用的增强图库手册here中。
我理解代码的作用没有问题。我的问题是:
(1)为什么图形对象作为常量引用传递。 const Graph& g
?
(2)为什么边缘描述符不是以类似的方式传递,而只是按值传递?
据我所知,(1)的答案是它强加了一个约束来确保函数is_self_loop()
不会修改对象g
,也没有复制{{1}在函数中。
另一方面,副本确实是在g
。
有没有理由为这两个传递的物体给出这两种不同的推理?该函数似乎也没有改变edge_descriptor
,所以为什么不将它作为e
传递并且为了防止本地复制,为什么不将它作为参考传递呢?这与const
和g
的尺寸有关吗?也就是说,复制e
并不是一项昂贵的操作?如果是,那么用户如何确定哪个对象是" easy"复制和复制哪个对象很昂贵?