boost :: graph函数,边缘迭代器通过值传递,图形通过引用传递

时间:2017-11-02 04:42:44

标签: c++ boost graph

以下代码显示在可用的增强图库手册here中。

enter image description here

我理解代码的作用没有问题。我的问题是:

(1)为什么图形对象作为常量引用传递。 const Graph& g

(2)为什么边缘描述符不是以类似的方式传递,而只是按值传递?

据我所知,(1)的答案是它强加了一个约束来确保函数is_self_loop()不会修改对象g,也没有复制{{1}在函数中。

另一方面,副本确实是在g

的功能范围内

有没有理由为这两个传递的物体给出这两种不同的推理?该函数似乎也没有改变edge_descriptor,所以为什么不将它作为e传递并且为了防止本地复制,为什么不将它作为参考传递呢?这与constg的尺寸有关吗?也就是说,复制e并不是一项昂贵的操作?如果是,那么用户如何确定哪个对象是" easy"复制和复制哪个对象很昂贵?

0 个答案:

没有答案