# 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

Thread safety unknown!

## 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.
     */