On 11/05/2012 15:36, NsPx wrote:

I would like to delete a vertex and all its children vertices in a directed graph.
For example,

<>
typedef adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, vertex_info> Graph;
<>
// remove all children and the given vertex : doesn't work
for( it=allChildren.begin(), ite=allChildren.end(); it!=ite; ++it)
{
    remove_vertex(*it, *myGraph);
}


It doesn't work because removing a vertex invalidates existing vertex descriptors when vertices are stored in a vector.

See also the second table in: http://www.boost.org/doc/libs/1_49_0/libs/graph/doc/adjacency_list.html.

You could use the following instead:

 typedef adjacency_list<boost::vecS, boost::listS, boost::bidirectionalS, vertex_info> Graph;