On Saturday 06 May 2006 22:49, sean yang wrote:
I want to add a vertex, which a string as its ID to a graph if a vertex representing such a string does not exist in the graph. Is there a function call to test if a vertex exists in a graph?
I don't think there's any particularly efficient way of doing that. Could you
first read the strings into a set and then create vertices based on what's in
the set?
There isn't a function to test if a vertex is in a graph because it isn't
needed. The only way to get a vertex is to dereference a vertex_iterator, and
obviously such a vertex *is* in the graph. Except for default construction,
there isn't even a general way to construct a vertex. How could there be?
Vertex descriptors are required to be default constructible, assignable, and
equality comparable, but beyond that their representation is arbitrary, so
there's no way for a generic algorithm to create one.
Having said that, it is possible for any particular graph class to provide a
method for creating valid vertices, and adjacency_list provides the function
vertex( n, g ), which returns the nth vertex in g. I haven't read the source
for this function, but I assume that if n is out of range it does something
reasonable like return graph_traits
A related question I want to ask is whether there exist a function call that test whether an edge representing [vertext string("Node1") --> vertext string("Node2") ] exists in a graph.
There's a function edge( u, v, g ) returns the edge between u and v, if it exists. This function is required by the AdjacencyMatrix concept. D.