Hi! The edge_index internal property map is not created by default, so you have to define it explicitly: typedef adjacency_list<vecS, vecS, directedS, Foo*, property<edge_index_t, std::size_t> > MyGraph; typedef property_map<MyGraph, edge_index_t>::type MyEdgeIndexMap; ... // Retrieve the edge index map associated with the graph MyEdgeIndexMap emap = get(edge_index, g); ... // Convert the edge descriptor to an integer value cout << index[ get(emap, e, g) ] << endl; The vertex descriptor is an integer value so it works with operator[], but edge descriptor is an std::pair<>, so you have to convert it to an integer with the appropriate edge index map. This leaves only one question: how do you use bundled edge properties along with edge index map? Cheers, Gabe On Thu, Apr 1, 2010 at 3:19 AM, Trevor Harmon <Trevor.W.Harmon@nasa.gov> wrote:
Hi,
In the Boost Graph library, vertices have an index (vertex_index_t), and I was under the impression that edges have one, too. At least, there's a predefined type called edge_index_t. However, I can't figure out how to access an edge's index. For example, consider a graph defined like:
typedef adjacency_list<vecS, vecS, directedS, Foo*> MyGraph; typedef graph_traits<MyGraph>::vertex_descriptor Vertex; typedef graph_traits<MyGraph>::edge_descriptor Edge;
And let's say I've got a vertex descriptor called "u". I can iterate over u's outgoing edges like this:
typedef graph_traits<MyGraph>::out_edge_iterator out_iter; std::pair<out_iter, out_iter> outp; for (outp = out_edges(u, g); outp.first != outp.second; ++outp.first) { Edge e = *outp.first; Vertex v = target(e, g); cout << index[v] << std::endl; // Works fine cout << index[e] << std::endl; // Compiler error }
In this example, index[v] works as expected, but index[e] gives me a compiler error: "no match for ‘operator[]’ in ‘index[e]".
Perhaps my graph typedef needs to be changed so that its edges have a property map for edge_index_t, although I'm not sure how to do that. (And anyway I wouldn't expect vertices to have indices by default but edges not...)
Thanks for any help,
Trevor
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users