Loading...
Searching...
No Matches
CrossRefMap< GR, K, V > Class Template Reference
Data Structures » Maps » Graph Maps

## Detailed Description

template<typename GR, typename K, typename V>
class lemon::CrossRefMap< GR, K, V >

This class provides simple invertable graph maps. It wraps a standard graph map (`NodeMap`, `ArcMap` or `EdgeMap`) and if a key is set to a new value, then stores it in the inverse map. The graph items can be accessed by their values either using `InverseMap` or `operator()()`, and the values of the map can be accessed with an STL compatible forward iterator (`ValueIt`).

This map is intended to be used when all associated values are different (the map is actually invertable) or there are only a few items with the same value. Otherwise consider to use `IterableValueMap`, which is more suitable and more efficient for such cases. It provides iterators to traverse the items with the same associated value, but it does not have `InverseMap`.

This type is not reference map, so it cannot be modified with the subscript operator.

Template Parameters

  GR | The graph type.
  K | The key type of the map (`GR::Node`, `GR::Arc` or `GR::Edge`).
  V | The value type of the map.

See also
  IterableValueMap

`#include <lemon/maps.h>`

## Classes

class | ValueIt
| Forward iterator for values. More...
class | InverseMap
| The inverse map type of CrossRefMap. More...

## Public Types

typedef GR | Graph
| The graph type of CrossRefMap.
typedef K | Item
| The key type of CrossRefMap (`Node`, `Arc` or `Edge`).
typedef K | Key
| The key type of CrossRefMap (`Node`, `Arc` or `Edge`).
typedef V | Value
| The value type of CrossRefMap.
typedef ValueIt | ValueIterator
| Alias for `ValueIt`.

## Public Member Functions

| CrossRefMap (const Graph &graph)
| Constructor.
ValueIt | beginValue () const
| Returns an iterator to the first value.
ValueIt | endValue () const
| Returns an iterator after the last value.
void | set (const Key &key, const Value &val)
| Sets the value associated with the given key.
MapTraits< Map >::ConstReturnValue | operator[] (const Key &key) const
| Returns the value associated with the given key.
Key | operator() (const Value &val) const
| Gives back an item by its value.
int | count (const Value &val) const
| Returns the number of items with the given value.
InverseMap | inverse () const
| Gives back the inverse of the map.

## Protected Member Functions

virtual void | erase (const Key &key)
| Erase the key from the map and the inverse map.
virtual void | erase (const std::vector< Key > &keys)
| Erase more keys from the map and the inverse map.
virtual void | clear ()
| Clear the keys from the map and the inverse map.

## Constructor & Destructor Documentation

## CrossRefMap()

template<typename GR, typename K, typename V>

CrossRefMap | ( | const Graph & | graph | ) |

inline explicit

Construct a new CrossRefMap for the given graph.

## Member Function Documentation

## beginValue()

template<typename GR, typename K, typename V>

ValueIt beginValue | ( |  | ) | const

inline

Returns an STL compatible iterator to the first value of the map. The values of the map can be accessed in the [beginValue, endValue) range.

## endValue()

template<typename GR, typename K, typename V>

ValueIt endValue | ( |  | ) | const

inline

Returns an STL compatible iterator after the last value of the map. The values of the map can be accessed in the [beginValue, endValue) range.

## set()

template<typename GR, typename K, typename V>

void set | ( | const Key & | key,
|  | const Value & | val )

inline

Sets the value associated with the given key.

## operator[]()

template<typename GR, typename K, typename V>

MapTraits< Map >::ConstReturnValue operator[] | ( | const Key & | key | ) | const

inline

Returns the value associated with the given key.

## operator()()

template<typename GR, typename K, typename V>

Key operator() | ( | const Value & | val | ) | const

inline

This function gives back an item that is assigned to the given value or `INVALID` if no such item exists. If there are more items with the same associated value, only one of them is returned.

## count()

template<typename GR, typename K, typename V>

int count | ( | const Value & | val | ) | const

inline

This function returns the number of items with the given value associated with it.

## erase() [1/2]

template<typename GR, typename K, typename V>

virtual void erase | ( | const Key & | key | ) |

inline protected virtual

Erase the key from the map and the inverse map. It is called by the `AlterationNotifier`.

## erase() [2/2]

template<typename GR, typename K, typename V>

virtual void erase | ( | const std::vector< Key > & | keys | ) |

inline protected virtual

Erase more keys from the map and the inverse map. It is called by the `AlterationNotifier`.

## clear()

template<typename GR, typename K, typename V>

virtual void clear | ( |  | ) |

inline protected virtual

Clear the keys from the map and the inverse map. It is called by the `AlterationNotifier`.

## inverse()

template<typename GR, typename K, typename V>

InverseMap inverse | ( |  | ) | const

inline

Gives back the inverse of the CrossRefMap.