假设我有一个无向图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);
两边都消失了,还是我还有其中一条?
答案 0 :(得分:3)
您的两个问题的答案取决于图G的定义。
根据boost::graph tutorial,第一个问题的答案取决于您在图表定义中使用的OutEdgeList
。如果使用不能表示多个边的容器(例如setS
或hash_setS
),则无论插入多少次,两个顶点之间只会有一条边。如果您使用vectorS
,multisetS
或类似内容,则每次add_edge()
的调用都会插入一条边。
第二个问题的答案,根据the same page(页面的那一部分不允许直接链接 - 只搜索remove_edge
)是两个顶点之间的所有边缘都将被删除调用该特定remove_edge()
函数。还有其他几个版本的remove_edge()
(在同一页面上描述),每个版本的行为略有不同。