# Spec DeltaMapIterator
Bidirectional iterator over a DeltaMap.

Extends | Iter
Implements | BidirectionalIteratorConcept
All Extended | Iter
All Impl'd | BidirectionalIteratorConcept, CopyConstructibleConcept, DefaultConstructibleConcept, EqualityComparableConcept, ForwardIteratorConcept, InputIteratorConcept, IteratorAssociatedTypesConcept
Defined in | <seqan/journaled_string_tree.h>
Signature | `template <typename TDeltaMap> class Iter<TDeltaMap, DeltaMapIteratorSpec>;`

## Template Parameters

`TDeltaMap` | The delta map to iterate.

## Member Function Overview

### Member Functions Inherited From Iter

- `Iter`

### Member Functions Inherited From EqualityComparableConcept

- `operator!=`
- `operator==`

## Interface Function Overview

- `DeltaType deltaType(it);`
  Returns the delta type associated with the current value the iterator is pointing to.
- `TDeltaValue deltaValue(it, tag);`
  Returns the delta value associated with the current iterator position.

### Interface Functions Inherited From BidirectionalIteratorConcept

- `operator--(prefix)`
- `operator--(suffix)`
- `goPrevious`

### Interface Functions Inherited From InputIteratorConcept

- `operator++(suffix)`
- `operator++(prefix)`
- `operator->`
- `goNext`

### Interface Functions Inherited From IteratorAssociatedTypesConcept

- `operator*`
- `value`
- `getValue`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Iter

- `Container`
- `IterComplementConst`
- `IterMakeConst`
- `Spec`

### Interface Metafunctions Inherited From IteratorAssociatedTypesConcept

- `Difference`
- `GetValue`
- `Pointer`
- `Reference`
- `Value`

## Interface Functions Detail

### `DeltaType deltaType(it);`

Returns the delta type associated with the current value the iterator is pointing to.

#### Parameters

`it` | The iterator pointing to the value for which the delta type should be determined.

#### Returns

`DeltaType` | The type of the current value. Of type DeltaType.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

### `TDeltaValue deltaValue(it, tag);`

Returns the delta value associated with the current iterator position.

#### Parameters

`it` | The iterator to query the delta event for.
`tag` | The tag used to select the requested delta type.

#### Returns

`TDeltaValue` | A reference to the delta at the current iterator position of type DeltaValue. @remark Note the expression `isDeltaType(deltaType(it), tag)<\tt> must evaluate to `true<\tt>, otherwise the result is undefined.``

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### Dox Sources

    /*!
     * @class DeltaMapIterator
     *
     * @implements BidirectionalIteratorConcept
     *
     * @extends Iter
     *
     * @headerfile <seqan/journaled_string_tree.h>
     *
     * @brief Bidirectional iterator over a @link DeltaMap @endlink.
     *
     * @signature template <typename TDeltaMap> class Iter<TDeltaMap,
     *            DeltaMapIteratorSpec>;
     *
     * @tparam TDeltaMap The delta map to iterate.
     *
     * @fn DeltaMapIterator#deltaType
     *
     * @headerfile <seqan/journaled_string_tree.h>
     *
     * @brief Returns the delta type associated with the current value the iterator
     *        is pointing to.
     *
     * @signature DeltaType deltaType(it);
     *
     * @param[in] it The iterator pointing to the value for which the delta type
     *               should be determined.
     *
     * @return DeltaType The type of the current value. Of type @link DeltaType
     *                   @endlink.
     *
     * @fn DeltaMapIterator#deltaValue
     *
     * @headerfile <seqan/journaled_string_tree.h>
     *
     * @brief Returns the delta value associated with the current iterator position.
     *
     * @signature TDeltaValue deltaValue(it, tag);
     *
     * @param[in] it The iterator to query the delta event for.
     * @param[in] tag The tag used to select the requested delta type.
     *
     * @return TDeltaValue A reference to the delta at the current iterator position
     *                     of type @link DeltaMap#DeltaValue @endlink. @remark Note
     *                     the expression <tt>isDeltaType(deltaType(it), tag)<\tt>
     *                     must evaluate to <tt>true<\tt>, otherwise the result is
     *                     undefined.
     */