Скопируйте BOOST :: Graph в std :: vector

0

Я обязан использовать 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());

Я прочитал эту ссылку, но все же, я не могу понять.

Я хотел бы видеть график как только контейнер.

  • 0
    Может показаться странным, что вы используете v как для вершины, так и для вектора.
  • 0
    Опечатка @interjay, обновлено!
Показать ещё 2 комментария
Теги:
c++11
boost

1 ответ

2
Лучший ответ

Чтобы выполнить итерацию через DAG, вы можете использовать либо первый, либо первый шаг, последний, требующий временной очереди. Вы можете узнать больше об этих алгоритмах здесь и здесь.

Конечно, структура данных графа BOOST реализует для вас вершинный и краевой итератор... вы можете выполнять итерацию по всем вершинам с помощью функции 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;
}
  • 0
    Я знаю алгоритмы. Проблема с BOOST. Я просто хочу скопировать каждую вершину в `std :: vector ', и я не знаю как.
  • 0
    Хорошо, посмотрите на пример кода с сайта ... Я просто аннотировал его, чтобы показать вам, где вы можете поместить свой код std::vector в цикл for чтобы получить все вершины в контейнер STL
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню