Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

adding custom vertices to a boost graph

Tags:

If I have n elements defined with class CElement, how can one create vertices of those elements with boost graph - and connect them also? I've seen boost graph bundled props, but I just can't figure this one out.

like image 746
dodol Avatar asked Jun 23 '10 08:06

dodol


1 Answers

I don't understand what you want to do exactly. Do you want to associate some data to vertices? Then use bundled properties.

//Define a class that has the data you want to associate to every vertex and edge struct Vertex{ int foo;} struct Edge{std::string blah;}  //Define the graph using those classes typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS, Vertex, Edge > Graph; //Some typedefs for simplicity typedef boost::graph_traits<Graph>::vertex_descriptor vertex_t; typedef boost::graph_traits<Graph>::edge_descriptor edge_t;  //Instanciate a graph Graph g;  // Create two vertices in that graph vertex_t u = boost::add_vertex(g); vertex_t v = boost::add_vertex(g);  // Create an edge conecting those two vertices edge_t e; bool b; boost::tie(e,b) = boost::add_edge(u,v,g);   // Set the properties of a vertex and the edge g[u].foo = 42; g[e].blah = "Hello world"; 

The are other ways to set the properties, but there you a have an example to bootstrap.

I hope I didn't misunderstand the question.

like image 122
Tristram Gräbener Avatar answered Sep 19 '22 04:09

Tristram Gräbener