C++ concepts: InputIterator
From cppreference.com
An InputIterator is an Iterator that can read from the pointed-to element. InputIterators only guarantee validity for single pass algorithms: once an InputIterator i has been incremented, all copies of its previous value may be invalidated.
[edit] Requirements
In addition to the above requirements, for a type It to be an InputIterator, instances i and j of It must:
| Expression | Return | Equivalent expression | Notes |
|---|---|---|---|
| i != j | contextually convertible to bool | !(i == j) | Precondition: (i, j) is in the domain of ==. |
| *i | convertible to value_type | If i == j and (i, j) is in the domain of == then this is equivalent to *j. |
Precondition: i is dereferenceable. The expression (void)*i, *i is equivalent to *i. |
| i->m | (*i).m | Precondition: i is dereferenceable. | |
| ++i | It& |
Precondition: i is dereferenceable. Postcondition: i is dereferenceable or i is past-the-end. Postcondition: Any copies of the previous value of i are no longer required to be either dereferenceable or to be in the domain of ==. | |
| (void)i++ | (void)++i | ||
| *i++ | convertible to value_type | value_type x = *i; ++i; |