Boost logo

Boost Users :

Subject: Re: [Boost-users] [BGL] iterator/descriptor invalidation
From: Julius Ziegler (ziegler_at_[hidden])
Date: 2008-12-10 07:26:32


Dmitry Bufistov <dmitry <at> lsi.upc.edu> writes:

> > It strikes to me now that the matter is not so subtle at all, since
> > add_vertex()
> > with vecS is very likely to invalidate vertex_iterators (clearly contrary to
> > the
> > documentation). In my case the issue was a bit obscured since it is not
> > perfectly clear that source(edge_descriptor) and target(edge_descriptor) use
> > vertex_iterators. I had expected that edge_descriptor stores two
> > vertex_descriptors.
>
> The problem is not with edge_descriptor it is in the operator++() of the
> edge_iterator class.

I think that edge_iterators are not directly affected, and its still save to
use them to access, e.g., edge properties. Its also save to use operator++().
The problem is that calling source(...) on an edge descriptor dereferences a
vertex_iterator, and THAT one may have been invalidated. Is that right?

Regards, Julius


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