This is a simple and fast digraph implementation. It is also quite memory efficient, but at the price that it does support only limited (only stack-like) node and arc deletions. It fully conforms to the Digraph concept.
- See Also
- concepts::Digraph.
#include <lemon/smart_graph.h>
Inherits DigraphExtender< Base >.
|
class | Snapshot |
| Class to make a snapshot of the digraph and to restrore to it later. More...
|
|
|
| SmartDigraph () |
|
Node | addNode () |
| Add a new node to the digraph.
|
|
Arc | addArc (const Node &s, const Node &t) |
| Add a new arc to the digraph.
|
|
void | reserveNode (int n) |
| Using this it is possible to avoid the superfluous memory allocation.
|
|
void | reserveArc (int m) |
| Using this it is possible to avoid the superfluous memory allocation.
|
|
bool | valid (Node n) const |
| Node validity check.
|
|
bool | valid (Arc a) const |
| Arc validity check.
|
|
void | clear () |
| Clear the digraph.
|
|
Node | split (Node n, bool connect=true) |
| Split a node.
|
|
SmartDigraph is not copy constructible. Use DigraphCopy() instead.
Assignment of SmartDigraph to another one is not allowed. Use DigraphCopy() instead.
Add a new node to the digraph.
- Returns
- The new node.
Arc addArc |
( |
const Node & |
s, |
|
|
const Node & |
t |
|
) |
| |
|
inline |
Add a new arc to the digraph with source node s
and target node t
.
- Returns
- The new arc.
void reserveNode |
( |
int |
n | ) |
|
|
inline |
Using this it is possible to avoid the superfluous memory allocation: if you know that the digraph you want to build will be very large (e.g. it will contain millions of nodes and/or arcs) then it is worth reserving space for this amount before starting to build the digraph.
- See Also
- reserveArc
Using this it is possible to avoid the superfluous memory allocation: if you know that the digraph you want to build will be very large (e.g. it will contain millions of nodes and/or arcs) then it is worth reserving space for this amount before starting to build the digraph.
- See Also
- reserveNode
bool valid |
( |
Node |
n | ) |
const |
|
inline |
This function gives back true if the given node is valid, ie. it is a real node of the graph.
- Warning
- A removed node (using Snapshot) could become valid again when new nodes are added to the graph.
bool valid |
( |
Arc |
a | ) |
const |
|
inline |
This function gives back true if the given arc is valid, ie. it is a real arc of the graph.
- Warning
- A removed arc (using Snapshot) could become valid again when new arcs are added to the graph.
Erase all the nodes and arcs from the digraph.
Node split |
( |
Node |
n, |
|
|
bool |
connect = true |
|
) |
| |
|
inline |
This function splits a node. First a new node is added to the digraph, then the source of each outgoing arc of n
is moved to this new node. If connect
is true
(this is the default value), then a new arc from n
to the newly created node is also added.
- Returns
- The newly created node.
- Note
- The
Arc
s referencing a moved arc remain valid. However InArc
's and OutArc
's may be invalidated.
- Warning
- This functionality cannot be used together with the Snapshot feature.