
From that I isolated the following code which compiles without any
Thanks Alex, I finally understood that using std::vec and std::list is different in the way that we need to specify an index for the edges/nodes while using such a routine like depth_first_visit. Thanks for your help! Simon problem:
typedef adjacency_list < vecS, vecS,
bidirectionalS, GraphvizVertexProperty,GraphvizEdgeProperty, GraphvizGraphProperty > Graph;
...
depth_first_visit(_graph2, loop_head, default_dfs_visitor(), make_iterator_property_map(reachable_from_head.begin(),get(vertex_index, _graph2), c)); So this works fine!
Then, I would like to change the type of graph, so more precisely, to use a std::list (or listS) instead of a std..vector (vecS) for the VertexListS So the first line declaration becomes:
typedef adjacency_list < vecS, listS, bidirectionalS,GraphvizVertexProperty,GraphvizEdgeProperty, GraphvizGraphProperty > Graph; //only the 2nd argument changes But then when I compile the code, I get 1 error during the compilation as described hereafter.
"If the VertexList of the graph is vecS, then the graph has a builtin vertex indices accessed via the property map for the vertex_index_t property." (http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/adjacency_list.html http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/adjacency_list.html) So when you use listS instead you have to supply your own vertex index map.