$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Doug Gregor (dgregor_at_[hidden])
Date: 2004-08-01 09:41:05
On Jul 31, 2004, at 4:58 PM, Ralph Wessel wrote:
> I would like to use the BGL for a project I'm working on, but I 
> haven't been able to find a particular piece of information. The 
> system I'm modeling can be easily represented by a directed graph, but 
> it seems that an essential  vertex property can only be calculated on 
> the fly based on the current in-edge and out-edge as the graph is 
> traversed. Can this be supported in the BGL in a way which can feed 
> this vertex property to the supplied algorithms?
You can do this by creating your own external property map type, e.g.,
template<typename Graph>
   struct my_property_map
   {
     typedef typename graph_traits<Graph>::vertex_descriptor key_type;
     typedef int value_type; // change me
     typedef value_type reference;
     typedef boost::readable_property_map_tag category;
     explicit my_property_map(const Graph& g) : g(g) {}
     const Graph& g;
   };
template<typename Graph>
   typename my_property_map<Graph>::reference
   get(my_property_map<Graph> pm, typename 
my_property_map<Graph>::key_type k)
   {
     // compute whatever you want...
     return in_degree(k, g) + out_degree(k, g);
   }
        Doug