The Iterator
concept describes types that can be used to identify and traverse the elements of a container.
Iterator
is the base concept used by other iterator types: InputIterator
, OutputIterator
, ForwardIterator
, BidirectionalIterator
, and RandomAccessIterator
. Iterators can be thought of as an abstraction of pointers.
Requirements
The type It
satisfies Iterator
if.
- The type
It
satisfiesCopyConstructible
, and - The type
It
satisfiesCopyAssignable
, and - The type
It
satisfiesDestructible
, and - lvalues of type
It
satisfySwappable
, and
Given.
-
r
, an lvalue of typeIt
, -
reference
, the type denoted bystd::iterator_traits<It>::reference
The following expressions must be valid and have their specified effects:
Expression | Return Type | Precondition |
---|---|---|
*r | unspecified | r is dereferenceable (see below) |
++r | It& | r is incrementable (see below) |
Dereferenceable iterators
Iterators for which the behavior of the expression *i
is defined are called dereferenceable.
Iterator
s are not dereferenceable if.
- they are past-the-end iterators (including pointers past the end of an array) or before-begin iterators. Such iterators may be dereferenceable in a particular implementation, but the library never assumes that they are.
- they are singular iterators, that is, iterators that are not associated with any sequence. A null pointer, as well as a default-constructed pointer (holding an indeterminate value) is singular
- they were invalidated by one of the iterator-invalidating operations on the sequence to which they refer.
Iterators for which the behavior of the expression ++i
is defined are called incrementable.
Please login to continue.