# Concept InputIteratorConcept
Iterator that allows dereferenced reading.

Extends | CopyConstructibleConcept, EqualityComparableConcept, IteratorAssociatedTypesConcept
All Extended | CopyConstructibleConcept, EqualityComparableConcept, IteratorAssociatedTypesConcept
All Subcl's | BidirectionalIteratorConcept, ForwardIteratorConcept, MutableBidirectionalIteratorConcept, MutableForwardIteratorConcept, MutableRandomAccessIteratorConcept, MutableRootedIteratorConcept, MutableRootedRandomAccessIteratorConcept, RandomAccessIteratorConcept, RootedIteratorConcept, RootedRandomAccessIteratorConcept
Defined in | <seqan/basic.h>
Signature | `InputIteratorConcept<T>`

## Detailed Description

The SeqAn iterators mirror the definitions from ConceptC++.

## See Also

- OutputIteratorConcept

## Member Function Overview

### Member Functions Inherited From EqualityComparableConcept

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

## Interface Function Overview

- `void goNext(it);`
  Iterates to next position.
- `TIterator operator++(it);`
  C++ built-in prefix increment operator.
- `TIterator operator++(it, i);`
  C++ built-in suffix increment operator.
- `TResult operator->(it);`
  C++ built-in structure dereference operator.

### Interface Functions Inherited From IteratorAssociatedTypesConcept

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

## Interface Metafunction Overview

### Interface Metafunctions Inherited From IteratorAssociatedTypesConcept

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

## Interface Functions Detail

### `void goNext(it);`

Iterates to next position.

#### Parameters

`it` | The iterator to increment.

This function is equivalent to `++iterator`.

#### Data Races

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

### `TIterator operator++(it);`

C++ built-in prefix increment operator.

#### Parameters

`it` | The iterator to increment.

#### Returns

`TIterator` | A copy of the original iterator.

#### Data Races

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

### `TIterator operator++(it, i);`

C++ built-in suffix increment operator.

#### Parameters

`it` | The iterator to increment.
`i` | An integer, used to mark suffix decrement.

#### Returns

`TIterator` | A copy of the original iterator.

#### Data Races

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

### `TResult operator->(it);`

C++ built-in structure dereference operator.

#### Parameters

`it` | The iterator to structure-dereference.

#### Returns

`TResult` | Either a pointer or another type. If it is another type, the `operator->` is called recursively.

#### Data Races

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

#### Dox Sources

    /*!
     * @concept InputIteratorConcept
     *
     * @headerfile <seqan/basic.h>
     *
     * @extends IteratorAssociatedTypesConcept
     * @extends CopyConstructibleConcept
     * @extends EqualityComparableConcept
     *
     * @brief Iterator that allows dereferenced reading.
     *
     * @signature InputIteratorConcept<T>
     *
     * The SeqAn iterators mirror the definitions from <a href="http://generic-progr
     * amming.org/languages/conceptcpp/concept_web.php?header=iterator">ConceptC++</
     * a>.
     *
     * @see OutputIteratorConcept
     *
     * @fn InputIteratorConcept#operator++(suffix)
     *
     * @brief C++ built-in suffix increment operator.
     *
     * @signature TIterator operator++(it, i);
     *
     * @param[in,out] it The iterator to increment.
     * @param[in] i An integer, used to mark suffix decrement.
     *
     * @return TIterator A copy of the original iterator.
     *
     * @fn InputIteratorConcept#operator++(prefix)
     *
     * @brief C++ built-in prefix increment operator.
     *
     * @signature TIterator operator++(it);
     *
     * @param[in] it The iterator to increment.
     *
     * @return TIterator A copy of the original iterator.
     *
     * @fn InputIteratorConcept#operator->
     *
     * @brief C++ built-in structure dereference operator.
     *
     * @signature TResult operator->(it);
     *
     * @param[in] it The iterator to structure-dereference.
     *
     * @return TResult Either a pointer or another type. If it is another type, the
     *                 <tt>operator-></tt> is called recursively.
     *
     * @fn InputIteratorConcept#goNext
     *
     * @brief Iterates to next position.
     *
     * @signature void goNext(it);
     *
     * @param[in,out] it The iterator to increment.
     *
     * This function is equivalent to <tt>++iterator</tt>.
     */