Boost logo

Boost Users :

From: Christian Sturz (linuxkaffee_at_[hidden])
Date: 2008-02-15 16:18:16


> Do you have to use the property map method?
>
> I've converted over to bundled properties. Much simpler and intuitive.
> http://www.boost.org/libs/graph/doc/bundles.html

Thank you very much. This was a very good hint and works
perfect for me. Now I have another problem. Let's say I
want to add an edge between two vertices which are just specified
by their bundle property (in my case by two pointer to ClassA).
How do I find the corresponding vertex descriptors?

My current solution looks like:
vertex_descriptor_t MyGraph::getVertex( ClassA *a, bool &found )
{
  typedef pair< vertex_iterator_t, vertex_iterator_t > vertex_range;

  for( vertex_range i = vertices( myGraph ); i.first != i.second;
    ++i.first ) {
    if( myGraph[ *i.first ].pointToA == a ) {
      found = true;
      return *i.first;
    }
  }
  found = false;
  return 0;
}

[The vertex property is called "pointToA"]. I find this solution
not very elegant because
1) I have to iterate over all vertices and check their properties (pointToA)
2) I don't know how to indicate if a vertex could be not found. In my
current version I help out with a bool value passed as parameter.

Are there any better solutions for searching of vertices based on
their properties?

Regards,
Christian

-- 
Psst! Geheimtipp: Online Games kostenlos spielen bei den GMX Free Games! 
http://games.entertainment.web.de/de/entertainment/games/free

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