you should just be able to write:
add_edge(0, 1, g)
Is there a way to add an edge if I don't know the vertex indices? For instance, let's say I've only got the two Foo pointers and I want to add an edge between them.
I suppose I could iterate through all vertices in the graph, find the Foo pointer, and thus know its index, but I feel like there must be a better (and faster) way.
A common approach is to keep a map or unordered_map from Foo to vertex descriptor. You can think of a descriptor is a kind of generalized index. For example:
typedef graph_traits<Graph>::vertex_descriptor Vertex;
map<Foo*, Vertex> verts;
g.add_edge(verts[f], verts[g]);
assuming f and g are Foo objects.
Andrew Sutton