[BGL] Property map question
What determines when boost::get(Graph, vertex_myproperty_t) returns a
boost::property_map
Sorry - my previous post got cut in half somewhere in transit. This is a
reposting:
What determines when boost::get(Graph, vertex_myproperty_t) returns a
boost::property_map
Strange... One last attempt, this time posting through the Yahoo
Groups interface and not directly to gmane.comp.lib.boost.user...
Sorry - my previous post got cut in half somewhere in transit. This
is a
reposting:
What determines when boost::get(Graph, vertex_myproperty_t) returns a
boost::property_map
Hi Chris,
On Sun, 15 Sep 2002, Chris Russell wrote:
cdr> What determines when boost::get(Graph, vertex_myproperty_t) returns a
cdr> boost::property_map
Okay - I think I understand this. Since posting I've re-read the property
map documentation online and in the book and am still confused about several
points (forgive me ignorance - I'm learning a lot of new concepts (in the
canonical sense) at once). Will you help me with these follow-up questions
please:
Assertions: (please validate)
1. a property map maps some type (an enum or struct tag) to some other
type.
2. a property map declaration may contain nested property map declarations
but this does not reflect a hierarchy - it's just a template trick.
Effectively the property maps are peers.
3. graph containers like adjacency list will internally create a new
value_type object upon insertion of a vertex (in the case of a vertex
property map) and an edge (in the case of an edge property map).
Assuming the above assertions are correct, I'm still confused about several
points:
1. a boost::get call to return either a property_map
Hi Chris,
On Sun, 15 Sep 2002, Chris Russell wrote: cdr> What determines when boost::get(Graph, vertex_myproperty_t) returns a cdr> boost::property_map
::type vs. a cdr> ::const_type? The constness of the graph object that is passed to get().
cdr> vertex_myproperty_map_t MyMap = get(vertex_myproperty, Graph); cdr> cdr> ^--- this works as I expected. However, if I try to get a copy of my cdr> property map this way inside a dfs visitor method, my compiler tells cdr> me that cdr> there's no suitable conversion from property_map
vertex_myproperty_t>::const_type to property_map vertex_myproperty_t>::type (IA32 6.0 Intel compiler). You've got a const graph object inside the visitor, so you need to use the const property map.
Cheers, Jeremy
---------------------------------------------------------------------- Jeremy Siek http://php.indiana.edu/~jsiek/ Ph.D. Student, Indiana Univ. B'ton email: jsiek@osl.iu.edu C++ Booster (http://www.boost.org) office phone: (812) 855-3608 ----------------------------------------------------------------------
Hi Chris,
On Mon, 16 Sep 2002, Chris Russell wrote:
cdr> Okay - I think I understand this. Since posting I've re-read the
cdr> property map documentation online and in the book and am still
cdr> confused about several points (forgive me ignorance - I'm learning a
cdr> lot of new concepts (in the canonical sense) at once). Will you help
cdr> me with these follow-up questions please:
cdr>
cdr> Assertions: (please validate)
cdr>
cdr> 1. a property map maps some type (an enum or struct tag) to some other
cdr> type.
No, a propery map is a map from a set of key objects to a set of value
objects.
What you are probably thinking about is the boost::get() function that
returns a property map for a given graph and property tag. Perhaps it is a
little confusing that you use a different overload of boost::get() on the
property map itself.
cdr> 2. a property map declaration may contain nested property map
cdr> declarations but this does not reflect a hierarchy - it's just a
cdr> template trick. Effectively the property maps are peers.
Hmm, the above statement doesn't make much sense to me.
cdr> 3. graph containers like adjacency list will internally create a new
cdr> value_type object upon insertion of a vertex (in the case of a vertex
cdr> property map) and an edge (in the case of an edge property map).
Yes.
cdr> Assuming the above assertions are correct, I'm still confused about
cdr> several points:
cdr>
cdr> 1. a boost::get call to return either a property_map
participants (2)
-
Chris Russell
-
Jeremy Siek