如何在 BGL 图中获取 OutEdgeList

How to get the OutEdgeList inside a BGL graph

我使用由 boost 图形库制作的图形,并希望访问 OutEdgeList 以 get/set 一些内部信息(用于构建 OutEdgeList 的向量的保留大小)。

我广泛搜索了文档,但没有找到 function/member,其中 returns 是对 OutEdgeList 的引用或指针。

我的问题是是否有办法获取 OutEdgeList 图表,或者是否可以提高 'protects' 用户避免直接弄乱其内部结构。

another question 中,我找到了一个示例,您可以在其中直接使用 graph.m_edges 访问 EdgeList,也可以将其用作向量来执行 graph.m_edges.reserve(115960001),所以我希望应该有也是访问 OutEdgeList 的一种方式。

感谢任何帮助!

获取 OutEdgeList 的正确方法是遍历所有 m_vertices 并访问它们的 m_out_edges 属性。

VertexIterator vi, vi_end;
for (boost::tie(vi, vi_end) = vertices(graph); vi != vi_end; ++vi){
     graph.m_vertices[*vi].m_out_edges.reserve(6);
}

通过为每个顶点保留适当数量的边,我将内存使用量从 12GB 减少到 10.5GB。

我花了很长时间才找到成员,因为我预计他们会在 boost/graph/adjacency_list.hpp but they where in boost/graph/detail/adjacency_list.hpp