2013-07-11 42 views
1

给定一个空的boost :: graph g,我想设置该图中顶点的数量,然后添加一些边。但从文档中,我找不到相关的功能。我找到的所有例子都定义了初始化中顶点的大小(如图g(10)定义了一个包含10个顶点的图)。但是当我定义图形时,我不知道大小。我想先定义一个Graph g,然后再设置大小。设置boost中顶点的数量:图

回答

1

最简单的方法是对每个你想要的顶点调用boost :: add_vertex(graph)方法。

这里是一个不错的地方开始Using C++ Boost's Graph Library

注意,你没有一个添加的顶点之一。如果你关心的只是边缘,那么add_edge()会为你添加缺失的顶点。

+0

感谢您的回答。问题是,如果我需要添加5000个顶点,我不想调用5000次add_vertex(),它可能非常慢。 – LittleSweet

+1

决定你可以花多少时间来完成这项任务。写一些测试代码。测量。如果时间太长,那么用一些代码和一些测量值来问一个问题。 – ravenspoint

+0

@ravenspoint我同意LittleSweet - 我已经运行了一个分析器,看起来图的内存分配占用了我运行时的70%。无论如何预先分配我将要添加的边的数量? –

2

你或许可以尝试有点脏伎俩,如:

add_edge(0,4999,g); 
remove_edge(0,4999,g); 

它利用的add_edge对的adjacency_list的副作用,即事实BGL如果有必要延长顶点的载体。

+0

我试过这个,用'num_vertices(Graph)'进行验证,它起作用! – Wiredchop

相关问题