Boost logo

Boost Users :

From: Leandro Melo (ltcmelo_at_[hidden])
Date: 2007-01-30 06:02:25


Hi.

I had similar problems. Unfortunately, I can't remember right now what
the particular situation was. I wrote the code in different ways
(because of the invalidation process), but still my program crashed.
Then I tried running the same code on GCC (in a debian machine). For
my surprise, the problem no longer happened.

Leandro Melo

On 1/29/07, Doug Gregor <dgregor_at_[hidden]> wrote:
>
> On Jan 29, 2007, at 2:38 PM, Adrian Boeing wrote:
>
> > Hi Jens,
> >
> > Unfortunately it's all part of a larger program so I can't easily
> > provide a small example.
> >
> > Yes, I am using the vecS storage:
> > typedef
> > boost::adjacency_list<boost::vecS,boost::vecS,boost::bidirectionalS,bo
> > ost::property<vertex_prop_t,
> > T>,boost::property<edge_prop_t, U>,boost::no_property, boost::listS >
> > graph_type;
> >
> > I'm not sure how to remove the property descriptor, there does not
> > seem
> > to be a boost::remove(vertex prop,graph) that I can find anywhere.
>
> Hmmm. So, when one removes a vertex from an adjacency_list with
> VertexListS=vecS, it actually invalidates all of the existing vertex
> descriptors. So simple code like the following causes problems:
>
> graph_type::vertex_descriptor u = *vertices(g).first;
> graph_type::vertex_descriptor v = *(++vertices(g).first);
> clear_vertex(u, g);
> remove_vertex(u, g);
> adjacent_vertices(v, g); // v has been invalidated
>
> vecS is a tricky beast. I usually recommend avoiding the removal of
> vertices when VertexListS=vecS... it's inefficient and hard to use
> properly.
>
> Cheers,
> Doug
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net