在创建图形之前设置边缘属性

时间:2011-07-18 13:24:41

标签: c++ boost-graph

我正在生成boost::graph,边缘约为300k。我在循环中创建了一组边,我还计算了边的一些属性。由于我需要所有边来创建图形,所以我还无法访问edge_descriptor。有没有办法做到这一点,而不是再次通过整个集合?当我创建边缘时,我使用std::pair<int, int>,这是否与描述符兼容?

1 个答案:

答案 0 :(得分:1)

如果您知道顶点的数量(那么您可以初始化图形,然后可以稍后添加边)。如果您事先不知道顶点的数量,我不知道如何制作图形。

如果你有顶点(例如,如果你得到一个顶点时为顶点创建了vertex_descriptors)那么你可以使用函数boost::add_edge(u,v,the_graph)在同一个循环中向图形添加边 假设您有图形和vertex_descriptors,如下所示:

//Note: this code is just a guideline, i hope you'd be able to take up from here
typedef typename boost::adjacency_list<boost::listS, boost::vecS,
                            boost::directedS,Vertex_t*> Graph_t;

typedef typename boost::graph_traits<Graph_t>::vertex_descriptor Vd_t;

然后

Graph_t the_graph(Num_vertices);
Vd_t u,v;
//assign u,v
boost::add_edge(u,v,the_graph)