Definition
An instance da of class node_member_da<Str,T> manages the access to a node parameter that is organized as a member of a struct type, which is the first template argument of a parameterized graph GRAPH<Str,?>. The parameter is of type T and the struct of type Str.
Classes edge_member_da<Str,T> is defined completely analogously.
Creation
| node_member_da<Str,T> | da; | introduces a variable da of this class that is not bound. |
node_member_da<Str,T> |
da(Ptr ptr); | introduces a variable da of this class, which is bound to ptr. |
|
Operations
| T | get(node_member_da<Str,T> ma, Iter it) | |
| returns the associated value of it for this accessor. | ||
| void | set(node_member_da<Str,T>& ma, Iter it, T val) | |
| sets the associated value of it for this accessor to the given value. | ||
Implementation
Constant Overhead. The instance da accesses its parameter through a pointer to member of type Ptr, which is defined for example by typedef T Str::*Ptr.
Example
We have a parameterized graph G where the node information type is the following struct type Str:
struct Str {
int x;
color col; };
We want to count the number of red nodes.
Since we have the template function of sect. node_array_da we can
easily use it to do the computation:
int count_red(GRAPH<Str,double> G) {
node_member_da<Str,color> Color(&Str::col);
return count_red_t(G,Color); }