我正在生成一个boost::graph
, 大约有 300k 边缘。我在一个循环中创建了一组边,在其中我还计算了边的一些属性。因为我需要所有边来创建图形,所以我还没有访问edge_descriptor
s 的权限。有没有办法做到这一点,而无需再次通过整个集合?当我创建边缘时,我使用std::pair<int, int>
, 这与描述符兼容吗?
1 回答
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)
于 2011-07-18T21:16:53.140 回答