
Jeremy, On Mon, 5 Apr 2004, Jeremy Siek wrote:
On Apr 5, 2004, at 11:57 AM, Douglas Paul Gregor wrote:
Not this one. Do you really think this extra overhead is going to sink the idea?
Well, it's a pretty major overhead. We're talking an extra load from memory every time you want to do anything with a vertex descriptor. For the slow graph structures this is not significant, but this would change the fast graph structures into slow ones.
Another idea I had was to make vertex_descriptor some kind of pointer proxy that defined operator-> to return City*.
If you still want convertability to an (unsigned) int, you'll need to either store that in the class derived from City or store it directly, so we'll probably need a proxy in any case. Personally, I'd be willing to pay for the few extra memory ops (who knows? they may get optimized away) in most of my work. I think having more user-friendly graph adaptors graph<Vertex, Edge> and digraph<Vertex, Edge> would help the usability of the library; adjacency_list can be for those that need maximal performance (although I suspect that they'd roll their own graph data structures/algorithms anyway). Doug