рисование пользовательского графика BGL с графиком

Я новичок в библиотеке графов Boost и пытаюсь нарисовать график с помощью graphviz.

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/utility.hpp>                // for boost::tie
#include <iostream>
#include <utility>                          // for std::pair

using namespace boost;
using namespace std;

class V {};
class C {};

void draw_test(){
typedef boost::adjacency_list<boost::listS, boost::listS, boost::bidirectionalS, V, C > MyGraph;
typedef boost::graph_traits<MyGraph>::vertex_descriptor vertex_descriptor;
MyGraph g;
vertex_descriptor a = add_vertex(V(), g);
vertex_descriptor b = add_vertex(V(), g);
add_edge(a, b, g);
write_graphviz(std::cout, g);
}

int main() {
draw_test();

return 0;
}

Но я получил следующую ошибку:

http://pastebin.com/KmTyyUHh

Я буду очень благодарен за любую помощь

4

Решение

Вы можете найти точно такую ​​же проблему в этих вопросах (1, 2). Проблема в том, что write_graphviz требует карту свойств индекса вершины (как и многие другие функции Boost.Graph). Список смежностей с listS в качестве его VertexList не имеет его по умолчанию. Если вам действительно не нужно listS просто используйте vecS в вашем втором параметре шаблона. Другая альтернатива, которую вы можете найти в первом связанном ответе, — это создать и инициализировать карту свойств внешнего индекса вершины, а затем использовать перегрузку: write_graphviz это позволяет вам передавать это явно. Это действительно полезно для множества алгоритмов, когда вам нужно использовать listS или же setS в вашем графике.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]