在图表中添加和删除现有边缘(BOOST)?

时间:2014-11-28 15:32:38

标签: boost graph add edge

假设我有一个无向图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);

两边都消失了,还是我还有其中一条?

1 个答案:

答案 0 :(得分:3)

您的两个问题的答案取决于图G的定义。

根据boost::graph tutorial,第一个问题的答案取决于您在图表定义中使用的OutEdgeList。如果使用不能表示多个边的容器(例如setShash_setS),则无论插入多少次,两个顶点之间只会有一条边。如果您使用vectorSmultisetS或类似内容,则每次add_edge()的调用都会插入一条边。

第二个问题的答案,根据the same page(页面的那一部分不允许直接链接 - 只搜索remove_edge)是两个顶点之间的所有边缘都将被删除调用该特定remove_edge()函数。还有其他几个版本的remove_edge()(在同一页面上描述),每个版本的行为略有不同。