我有义务使用BOOST。哪个是将BOOST :: Graph复制到std :: vector的简单方法?
我想做这样的事情:
1. Create std::vector<float> v
2. for every vertex in the boost::graph g
v.push_back(g.getDataofCurrentVertex());
我已阅读this链接,但我仍然无法弄明白。
我希望将图表视为一个容器。
答案 0 :(得分:2)
为了遍历DAG,您可以使用深度优先或广度优先遍历,后者需要临时队列。您可以详细了解这些算法here和here。
当然BOOST图数据结构为你实现了一个顶点和边缘迭代器...你可以使用他们在“访问顶点集”部分中提到的verticies()
函数迭代所有顶点您指向的链接。所有verticies的简单遍历的示例代码都在它下面的代码中:
int main(int,char*[])
{
// ...
// get the property map for vertex indices
typedef property_map<Graph, vertex_index_t>::type IndexMap;
IndexMap index = get(vertex_index, g);
std::cout << "vertices(g) = ";
typedef graph_traits<Graph>::vertex_iterator vertex_iter;
std::pair<vertex_iter, vertex_iter> vp;
for (vp = vertices(g); vp.first != vp.second; ++vp.first) {
//***replace this code with your vector::push_back() code ***
std::cout << index[*vp.first] << " ";
}
std::cout << std::endl;
// ...
return 0;
}