Loading...
Searching...
No Matches
SmartEdgeSet< GR > Class Template Reference
Data Structures » Graph Structures

## Detailed Description

template<typename GR>
class lemon::SmartEdgeSet< GR >

This structure can be used to establish another graph over a node set of an existing one. This class uses the same Node type as the underlying graph, and each valid node of the original graph is valid in this arc set, therefore the node objects of the original graph can be used directly with this class. The node handling functions (id handling, observing, and iterators) works equivalently as in the original graph.

Parameters

  GR | The type of the graph which shares its node set with this class. Its interface must conform to the Digraph or Graph concept.

This implementation is slightly faster than the `ListEdgeSet`, because it uses continuous storage for edges and it uses just single-linked lists for enumerate incident edges. Therefore the edges cannot be erased from the edge sets.

This class fully conforms to the Graph concept. It provides only linear time counting for nodes, edges and arcs.

Warning
  If a node is erased from the underlying graph and this node is incident to one edge in the edge set, then the edge set is invalidated, and it cannot be used anymore. The validity can be checked with the `valid()` member function.

`#include <lemon/edge_set.h>`

## Public Member Functions

| SmartEdgeSet (const GR &graph)
| Constructor of the EdgeSet.
Edge | addEdge (const Node &u, const Node &v)
| Add a new edge to the graph.
bool | valid () const
| Validity check.

## Constructor & Destructor Documentation

## SmartEdgeSet()

template<typename GR>

SmartEdgeSet | ( | const GR & | graph | ) |

inline

Constructor of the EdgeSet.

## Member Function Documentation

## addEdge()

template<typename GR>

Edge addEdge | ( | const Node & | u,
|  | const Node & | v )

inline

Add a new edge to the graph with node `u` and node `v` endpoints.

Returns
  The new edge.

## valid()

template<typename GR>

bool valid | ( |  | ) | const

inline

This functions gives back false if the EdgeSet is invalidated. It occurs when a node in the underlying graph is erased and it is not isolated in the EdgeSet.