An iterator is valid if it is dereferenceable or past-the-end.
An iterator i is incrementable if there is a "next" iterator, that is, if ++i is well-defined. Past-the-end iterators are not incrementable.
An Input Iterator j is reachable from an Input Iterator i if, after applying operator++ to i a finite number of times, i == j. [1]
The notation [i,j) refers to a range of iterators beginning with i and up to but not including j.
The range [i,j) is a valid range if both i and j are valid iterators, and j is reachable from i [2].
Valid expressions In addition to the expressions defined in Trivial Iterator, the following expressions must be valid. Name Expression Type requirements Return type Preincrement ++i X& Postincrement (void)i++ Postincrement and dereference *i++ T Expression semantics Name Expression Precondition Semantics Postcondition Dereference *i i is incrementable Preincrement ++i i is dereferenceable i is dereferenceable or past-the-end [3] [4] Postincrement (void)i++ i is dereferenceable Equivalent to (void)++i i is dereferenceable or past-the-end [3] [4] Postincrement and dereference *i++ i is dereferenceable Equivalent to {T t = *i; ++i; return t;} i is dereferenceable or past-the-end [3] [4] Complexity guarantees All operations are amortized constant time. Invariants Models Notes[1] i == j does not imply ++i == ++j.
[2] Every iterator in a valid range [i, j) is dereferenceable, and j is either dereferenceable or past-the-end. The fact that every iterator in the range is dereferenceable follows from the fact that incrementable iterators must be dereferenceable.
[3] After executing ++i, it is not required that copies of the old value of i be dereferenceable or that they be in the domain of operator==.
[4] It is not guaranteed that it is possible to pass through the same input iterator twice.
See alsoOutput Iterator, Iterator overview STL Main PageRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4