AddEdgeVisitor Concept
AddEdgeVisitor Concept
The AddEdgeVisitor concept exists to allow for some indirection in algorithms
that modify graphs by adding edges. In such algorithms, it may be convenient
to perform additional operations (such as updating an edge index map) at
points in the algorithm where an edge addition occurs. Replacing calls to
to
add_edge with calls to
AddEdgeVisitor::visit_vertex_pair
allows for such operations to be defined independently from the algorithm.
Notation
| Visitor |
is a type that models the AddEdgeVisitor concept |
| vis |
is an object of type Visitor |
| Graph |
is the type of a graph |
| u,v |
are objects of type graph_traits<Graph>::vertex_descriptor
|
| e |
is an object of type graph_traits<Graph>::edge_descriptor
|
| v |
is an object of type graph_traits<Graph>::vertex_descriptor
|
|
|
Associated Types
None
Valid Expressions
| Name | Expression | Return Type |
Description |
|---|
| Add an Edge |
vis.visit_vertex_pair(u, v, g) |
void |
Invoked every time an edge between vertices u and v
should be added to the graph g.
|
Models
Two models of this concept are defined in the file
add_edge_visitors.hpp:
- default_add_edge_visitor: The constructor of this class takes
no arguments.visit_vertex_pair(u, v, g) is just a dispatch to
add_edge(u, v, g).
- edge_index_update_visitor: The constructor of this class takes
two arguments: the first, an EdgeIndexMap,
is a
ReadWritePropertyMap that maps each edge in the associated graph
g to a distinct integer in the range [0, num_edges(g)).
The second argument is the number of edges in the underlying graph, which
serves as the "next available index" counter within the visitor.
For example, in the case the graph used has an initialized interior
edge index, the edge_index_update_visitor constructor should be
called with get(edge_index, g) as the edge index and
num_edges(g) as the next available index. When
visit_vertex_pair(u, v, g) is called, the
edge_index_update_visitor will add the edge (u,v) to the graph
and update the edge index for the newly created edge.
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)