next up previous contents index
Next: Constant Accessors ( constant_da Up: Graphs and Iterators Previous: STL Iterator Wrapper (

     
Node Array Data Accessor ( node_array_da )

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(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); }


next up previous contents index
Next: Constant Accessors ( constant_da Up: Graphs and Iterators Previous: STL Iterator Wrapper (
LEDA research project
1999-04-23