# Class Iter
Base class for iterators to traverse containers.

Implements | IteratorAssociatedTypesConcept

All Subcl's

AdaptorIterator, AdjacencyIterator, AlignColIterator, AnnotationTreeIterator, BfsIterator, BottomUpIterator, ConcatVirtualIterator, DeltaMapIterator, DfsPreorderIterator, EdgeIterator, InputStreamIterator, MaxRepeatsIterator, MultiMemsIterator, MumsIterator, OutEdgeIterator, OutputStreamIterator, PositionIterator, RightArrayBinaryTreeIterator, StdAdaptorIterator, StreamIterator, SuperMaxRepeatsFastIterator, SuperMaxRepeatsIterator, TopDownHistoryIterator, TopDownIterator, VertexIterator, VSTreeIterator, ZipIterator

All Impl'd | IteratorAssociatedTypesConcept
Defined in | <seqan/basic.h>
Signature | `template <typename TContainer, typename TSpec> class Iter;`

## Template Parameters

`TContainer` | The type of the container to iterate.
`TSpec` | Type to use for specializing the `Iter` class.

## Member Function Overview

- `Iter::Iter(), Iter::Iter(stream), Iter::Iter(streamBuf)`
  Constructor.

## Interface Function Overview

### Interface Functions Inherited From IteratorAssociatedTypesConcept

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

## Interface Metafunction Overview

- `Container<TIter>::Type`
  The container type of the iterator.
- `IterComplementConst<TIter>::Type`
  Metafunction that complements the const-ness of the container of an iterator.
- `IterMakeConst<TIter>::Type`
  Metafunction to make enforce const-ness of the container of an iterator.
- `Spec<TIter>::Type`
  Return specialization tag of the `Iter` specialization.

### Interface Metafunctions Inherited From IteratorAssociatedTypesConcept

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

## Member Functions Detail

### `Iter::Iter() Iter::Iter(stream) Iter::Iter(streamBuf)`

Constructor.

#### Parameters

`stream` | The `TStream` to write to.
`streamBuf` | A StreamBuffer to write to.

Allows default construction, construction from stream, as well as from a StreamBuffer.

#### Data Races

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

## Interface Metafunctions Detail

### `Container<TIter>::Type`

The container type of the iterator.

#### Template Parameters

`TIter` | The `TIter` class to query for its container type.

#### Returns

`Type` | The container type of `TIter`

### `IterComplementConst<TIter>::Type`

Metafunction that complements the const-ness of the container of an iterator.

#### Template Parameters

`TIter` | The Iter to complement the container constness of.

#### Returns

`Type` | The type of the iterator that is the same as `TIter` except that the const-ness of the container is complemented.

### `IterMakeConst<TIter>::Type`

Metafunction to make enforce const-ness of the container of an iterator.

#### Template Parameters

`TIter` | The iterator type to make the container const of.

#### Returns

`Type` | The resulting Iter type with a const container.

### `Spec<TIter>::Type`

Return specialization tag of the `Iter` specialization.

#### Template Parameters

`TIter` | The `Iter` class to get specialization tag of.

#### Returns

`Type` | The specialization tag used for the `Iter`.

#### Dox Sources

    /*!
     * @class Iter
     *
     * @implements IteratorAssociatedTypesConcept
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Base class for iterators to traverse containers.
     *
     * @signature template <typename TContainer, typename TSpec> class Iter;
     *
     * @tparam TContainer The type of the container to iterate.
     * @tparam TSpec Type to use for specializing the <tt>Iter</tt> class.
     *
     * @mfn Iter#IterComplementConst
     *
     * @brief Metafunction that complements the const-ness of the container of an
     *        iterator.
     *
     * @signature IterComplementConst<TIter>::Type
     *
     * @tparam TIter The @link Iter @endlink to complement the container constness
     *               of.
     *
     * @return Type The type of the iterator that is the same as <tt>TIter</tt>
     *              except that the const-ness of the container is complemented.
     *
     * @mfn Iter#IterMakeConst
     *
     * @brief Metafunction to make enforce const-ness of the container of an
     *        iterator.
     *
     * @signature IterMakeConst<TIter>::Type
     *
     * @tparam TIter The iterator type to make the container const of.
     *
     * @return Type The resulting Iter type with a const container.
     *
     * @mfn Iter#Spec
     *
     * @brief Return specialization tag of the <tt>Iter</tt> specialization.
     *
     * @signature Spec<TIter>::Type
     *
     * @tparam TIter The <tt>Iter</tt> class to get specialization tag of.
     *
     * @return Type The specialization tag used for the <tt>Iter</tt>.
     *
     * @mfn Iter#Container
     *
     * @brief The container type of the iterator.
     *
     * @signature Container<TIter>::Type
     *
     * @tparam TIter The <tt>TIter</tt> class to query for its container type.
     *
     * @return Type The container type of <tt>TIter</tt>
     *
     * @fn Iter::Iter
     *
     * @brief Constructor.
     *
     * @signature Iter::Iter()
     * @signature Iter::Iter(stream)
     * @signature Iter::Iter(streamBuf)
     *
     * @param[in] stream The <tt>TStream</tt> to write to.
     * @param[in] streamBuf A @link StreamBuffer @endlink to write to.
     *
     * Allows default construction, construction from stream, as well as from a
     * @link StreamBuffer @endlink.
     */