## Input Iterators

    Iterator

- Summary
- Data Type and Member Function Indexes
- Description
- Key to Iterator Requirements
- Requirements for Input Iterators
- See Also

### Summary

A read-only, forward moving iterator.

### Data Type and Member Function Indexes
(exclusive of constructors and destructors)

None

### Description

> NOTE:For a complete discussion of iterators, see the Iterators section of this reference.

Iterators are a generalization of pointers that allow a C++ program to uniformly interact with different data structures. Input iterators are read-only, forward moving iterators that satisfy the requirements listed below.

### Key to Iterator Requirements

The following key pertains to the iterator requirement descriptions listed below:

`a and b` | values of type `X`
`n` | value representing a `distance` between two iterators
`u, Distance, tmp and m` | identifiers
`r` | value of type `X&`
`t` | value of type `T`

### Requirements for Input Iterators

The following expressions must be valid for input iterators:

`X u(a)` | copy constructor, `u == a`
`X u = a` | assignment, `u == a`
`a == b, a != b` | return value convertible to `bool`
`*a` | a == b implies `*a == *b`
`++r` | returns `X&`
`r++` | return value convertible to const `X&`
`*r++` | returns type `T`
`a -> m` | returns `(*a).m`

For input iterators, `a == b` does not imply that `++a == ++b`.

Algorithms using input iterators should be single pass algorithms. That is, they should not pass through the same iterator twice.

The value of type `T` does not have to be an `lvalue`.

### See Also

Iterators, Output Iterators

Copyright (c) 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998