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
> From that I isolated the following code which compiles without
any
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)
So when you use listS instead you have to supply your own vertex
index map.