Vertex properties in BGL
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?
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
participants (2)
-
Doug Gregor
-
Ralph Wessel