假设我有一个无向图G。假设我添加以下内容
add_edge(1,2,G);
add_edge(1,3,G);
add_edge(0,2,G);
现在我再说一遍:
add_edge(0,2,G);
我的图形中是否有两个从0 ---> 2的边?
如果我两次添加边线并执行以下操作,会发生什么情况:
remove_edge(0,2,G);
两条边都消失了吗,还是我还剩下一条?
最佳答案
您对这两个问题的答案都取决于图G的定义。
根据boost::graph tutorial,第一个问题的答案取决于您在图形定义中使用的OutEdgeList
。如果使用的容器不能表示多个边(例如setS
或hash_setS
),则无论您插入多少次,两个顶点之间都只会有一个边。如果您使用vectorS
,multisetS
或类似名称,则每次调用add_edge()
都会插入一条边。
根据the same page(页面的该部分不允许直接链接-仅搜索remove_edge
)的说法,第二个问题的答案是,调用该特定remove_edge()
函数后,将删除两个顶点之间的所有边。 remove_edge()
还有其他几个版本(在同一页上进行了介绍),每个版本的行为略有不同。