
Hi Jeremy!
Why do you want to store vertex iterators instead of just vertex descriptors?
Maybe this is what I want to store :-) I want to store something which points to a vertex which allows me the fastest possible access to the vertex with all it's internal properties connected to it. If a reference to a vertex descriptor does that, this is what I want. I guess I gotta read a little more the docs
You can use adjacency_list_traits to get the vertex_descriptor type prior to creating the graph type.
Doug already pointed that out. Once again I gotta read a little more documentation ... Thanks although! Greetings, Sebastian
Cheers, Jeremy
On Nov 29, 2004, at 7:14 AM, Vladimir Prus wrote:
Hi Sebastian,
Hi folks!
I got a cyclic type-dependency problem. I am trying to let every vertex store a iterator to a list which stores vertex-iterators. This sounds weired, but I need to keep track of very few vertices within my graph which have a particle located at it. Thus I created a list of vertex-iterators who carry my particle positions in the graph. In order to be able to tell quickly if a vertice is taken by a particle I want each vertice to include a pointer to a null element representing the absence of a particle or a pointer into that list. My non-working code looks like:
Definition of my graph:
struct Spot { // acutally I need the vertex_iterator to be defined already // in order to define particle, but this is not yet defined // so I am using the knowledge that it is going to be represented // by a vector<std::size_t>::iterator (at least I hope so) // this assumption is WRONG!! typedef std::list< std::vector<std::size_t>::iterator >::iterator \\
There are two approaches.
1. Use pimpl or incomplete type to postpone defining the property type until you know the iterator type.
struct Spot; typedef boost::adjacency_list<boost::vecS, boost::vecS, \\ boost::undirectedS, Spot* > graph_t;
struct Spot { ............. } ;
2. Don't bother with iterators, store vector<unsigned> inside the Spot class. For VecS/VecS graph, using unsigned to identify vertices should be OK.
BTW, I'm not sure why your code does not work. It should work, maybe after changing size_t to int -- don't remember if vertex_descrption is signed or not.
- Volodya
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Jeremy Siek <jsiek@osl.iu.edu> http://www.osl.iu.edu/~jsiek Ph.D. Student, Indiana University Bloomington C++ Booster (http://www.boost.org) _______________________________________________
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users