将BOOST :: Graph复制到std :: vector

时间:2014-09-16 14:24:28

标签: c++ c++11 boost

我有义务使用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链接,但我仍然无法弄明白。

我希望将图表视为一个容器。

1 个答案:

答案 0 :(得分:2)

为了遍历DAG,您可以使用深度优先或广度优先遍历,后者需要临时队列。您可以详细了解这些算法herehere

当然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;
}