
On Jul 6, 2005, at 12:23 PM, Todd A. Gibson wrote:
Among my attempts, here's a typical one that won't compile:
typedef typename std::map<Edge, double> EdgeMap; EdgeMap myedges; //... boost::associative_property_map< EdgeMap > edge_assoc_map(myedges); brandes_betweenness_centrality(g, ... .edge_centrality_map(edge_assoc_map) ...)
Can someone enlighten me?
I can try :) The code above fails because edge descriptors can't be ordered via <. A future version of the BGL might support this operation, but for now... External edge property maps are typically constructed using an edge_index_t property. So, if you add property<edge_index_t, std::size_t> to the edge properties of your GraphType, then keep them numbered, e.g.: typename graph_traits<GraphType>::edge_iterator ei, ei_end; std::size_t index = 0; for(tie(ei, ei_end) = edges(g); ei != ei_end; ++ei, ++index) put(edge_index, g, *ei, index); Then you'll be able to build an external property map from a vector: std::vector<double> edge_cent(num_edges(g)); brandes_betweenness_centrality(g, .., .edge_centrality_map(make_iterator_property_map(edge_cent.begin(), get(edge_index, g))...); Doug