CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 23 Jul 2025 06:29:34 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/iterator/InputIterator/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 23 Jul 2025 06:29:34 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"796e-OC60aIMSfV137pnSNbuC8i7NJWg"
Content-Encoding: gzip
Empty class to identify the category of an iterator as an input iterator:
Input iterators are iterators that can be used in sequential input operations, where each value pointed by the iterator is read only once and then the iterator is incremented.
All forward, bidirectional and random-access iterators are also valid input iterators.
There is not a single type of input iterator: Each container may define its own specific iterator type able to iterate through it and access its elements. But all input iterators support -at least- the following operations:
Where X is an input iterator type, a and b are objects of this iterator type, and t and u are objects of the type pointed by the iterator type.
Algorithms requiring input iterators should be single-pass input algorithms: algorithms pass through an iterator position once at most.
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<iterator>
- iterator
- iterator_traits
functions
- advance
- back_inserter
-
beginC++11
- distance
-
endC++11
- front_inserter
- inserter
-
make_move_iteratorC++11
-
nextC++11
-
prevC++11
iterator categories
predefined iterators
- Reference
- <iterator>
- input_iterator_tag
class
<iterator>
std::input_iterator_tag
struct input_iterator_tag {};
Input iterator category
Input iterators
Input iterators are iterators that can be used in sequential input operations, where each value pointed by the iterator is read only once and then the iterator is incremented.
All forward, bidirectional and random-access iterators are also valid input iterators.
There is not a single type of input iterator: Each container may define its own specific iterator type able to iterate through it and access its elements. But all input iterators support -at least- the following operations:
property | valid expressions |
---|---|
Is copy-constructible, copy-assignable and destructible | X b(a); |
Can be compared for equivalence using the equality/inequality operators (meaningful if both iterators are be in domain). | a == b |
Can be dereferenced as an rvalue (if in a dereferenceable state). | *a |
Can be incremented (if in a dereferenceable state). The result is either also dereferenceable or a past-the-end iterator. The previous iterator value is not required to be dereferenceable after the increase. | ++a |
Its value type does not need to be assignable | t = u not required |
property | valid expressions |
---|---|
Is copy-constructible, copy-assignable and destructible | X b(a); |
Can be compared for equivalence using the equality/inequality operators (meaningful if both iterators are be in domain). | a == b |
Can be dereferenced as an rvalue (if in a dereferenceable state). | *a |
Can be incremented (if in a dereferenceable state). The result is either also dereferenceable or a past-the-end iterator. The previous iterator value is not required to be dereferenceable after the increase. | ++a |
Its value type does not need to be assignable | t = u not required |
Lvalues are swappable. | swap(a,b) |
Where X is an input iterator type, a and b are objects of this iterator type, and t and u are objects of the type pointed by the iterator type.
Algorithms requiring input iterators should be single-pass input algorithms: algorithms pass through an iterator position once at most.
See also
- output_iterator_tag
- Output iterator category (class)
- forward_iterator_tag
- Forward iterator category (class)
- bidirectional_iterator_tag
- Bidirectional iterator category (class)
- random_access_iterator_tag
- Random-access iterator category (class)
- iterator
- Iterator base class (class template)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us