Boost logo

Boost Users :

From: Sebastian Weber (sebastian.weber_at_[hidden])
Date: 2004-11-29 06:53:52


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 \\
        particle_t;
   particle_t particle;
};

typedef boost::adjacency_list<boost::vecS, boost::vecS, \\
        boost::undirectedS, Spot > graph_t;

Here I initialise my particles to be distributed in the graph object bg.
m_posA is of type: std::list<RandomGraph::gtraits::vertex_iterator>

// first initialise every position to the null-flag
for(; vi != vend; ++vi)
   bg[*vi].particle = Spot::particle_t();

// now place particles at random positions
boost::tie(vi, vend) = boost::vertices(bg);

for(std::size_t i = 0; i < initialA; i++) {
   std::size_t pos;
   //aList_t::iterator iter;
   // find a random empty vertice
   do {
     pos = rand_gen();
   } while(bg[pos].particle != m_posA_end);
   // place particle A there
   RandomGraph::gtraits::vertex_iterator vref = vi + pos;
   // put returns an iterator to the list-element where
   // vref has been stored
   bg[pos].particle = m_posA.put(vref);
}

Any help would be great.

Thanks in adavance.

Greetings,

Sebastian Weber


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