如何在 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
我使用由 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