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

发布于 2024-11-25 02:54:25 字数 219 浏览 1 评论 0原文

我正在生成一个 boost::graph,有大约 300k 条边。我在循环中创建了一组边,在其中我还计算了边的一些属性。由于我需要所有边来创建图形,因此我还无法访问 edge_descriptor。有没有办法做到这一点,而无需再次遍历整个集合?当我创建边缘时,我使用 std::pair,这与描述符兼容吗?

I'm generating a boost::graph, with some 300k edges. I create the set of edges in a loop, in which I also calculate some properties of the edges. Since I need all edges to create the graph, I don't have access to the edge_descriptors yet. Is there a way to do this without doing another pass over the entire set again? When I create my edges, I use std::pair<int, int>, is this compatible with the descriptors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深白境迁sunset 2024-12-02 02:54:25

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

如果您有顶点(即,如果您在获得顶点值后立即创建 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)

If you know the number of vertices(then you can initialize a graph and then you can add edges later).I have no idea how'd you make the graph if you do not know the number of vertices beforehand.

if you have vertices(i.e. if you make vertex_descriptors as soon as you get a value - for vertex) then you can add edges to the graph using the function boost::add_edge(u,v,the_graph), in the same loop
let's say you have the graph and vertex_descriptors like this:

//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;

then

Graph_t the_graph(Num_vertices);
Vd_t u,v;
//assign u,v
boost::add_edge(u,v,the_graph)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文