|
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