Hello,
Take this snippet:
// g is an adjacency_list
// u,v are vertices
bool b;
edge_desc e;
tie(e,b)=boost::edge(u,v,g);
if(b==false)
std::cerr << "No such edge!";
boost::edge() is written to handle non-existent vertices:
//abbreviated excerpt from detail/adjacency_list.hpp
inline std::pair
edge_dispatch(...) const
{
bool found;
typename Config::OutEdgeList::const_iterator
i = g.out_edge_list(u).find(StoredEdge(v)),
end = g.out_edge_list(u).end();
found = (i != end);
if (found)
return std::make_pair(edge_descriptor(u, v, &(*i).get_property()),
true);
else
return std::make_pair(edge_descriptor(u, v, 0), false);
}
However, I don't believe out_edge_list handles invalid vertices.
If I provide an invalid source vertex, u, I get a segmentation fault on
the call to g.out_edge_list(u).find(v).
Thanks,
-TAG
Todd A. Gibson