Definition
An instance da of class node_array_da<T> is instantiated with a LEDA node_array<T>.
The data in the node array can be accessed by the functions get(da,it) and set(da,it,value) that take as parameters an instance of node_array_da<T> and an iterator, see below.
node_array_da<T> ::value_type is a type and equals T.
For node_map<T> there is the variant node_map_da<T> which is defined completely analogous to node_array_da<T>. Classes edge_array_da<T> and edge_map_da<T> are defined analogously, as well.
#include < LEDA/graph _iterator.h >
Creation
node_array_da<T> | da | introduces a variable da of this class that is not bound. |
node_array_da<T> | da(leda_node_array<T>& na) | |
introduces a variable da of this class bound to na. |
Operations
T | get(node_array_da<T> da, Iter it) | |
returns the associated value of it for this accessor. | ||
void | set(node_array_da<T>& da, Iter it, T val) | |
sets the associated value of it for this accessor to the given value. |
Implementation
Constant Overhead.
Example
We count the number of 'red nodes' in a parameterized graph G.
int count_red(graph G, node_array<color> COL) { node_array_da<color> Color(COL); int counter=0; NodeIt it(G); while (it.valid()) { if (get(Color,it)==red) counter++; it++; } return counter; }
Suppose we want to make this 'algorithm' flexible in the representation of colors. Then we could write this version:
template<class DA> int count_red_t(graph G, DA Color) { int counter=0; NodeIt it(G); while (it.valid()) { if (get(Color,it)==red) counter++; it++; } return counter; }
With the templatized version it is easily to customize it to match the interface of the version:
int count_red(graph G, node_array<color> COL) { node_array_da<color> Color(COL); return count_red_t(G,Color); }