CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 23 Jul 2025 20:30:31 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/iterator/OutputIterator/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 23 Jul 2025 20:30:31 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"7716-NgFnUJf1v4WM9POyQ/3geh8BOCw"
Content-Encoding: gzip
Empty class to identify the category of an iterator as an output iterator:
Output iterators are iterators that can be used in sequential output operations, where each element pointed by the iterator is written a value only once and then the iterator is incremented.
All forward, bidirectional and random-access iterators that are not constant iterators are also valid output iterators.
There is not a single type of output iterator: Each container may define its own specific iterator type able to iterate through it and access its elements. But all output iterators support -at least- the following operations:
Where X is an output iterator type, a and b are objects of this iterator type, and t is an object of the type pointed by the iterator type (or some other type that can be assigned to the lvalue returned by dereferencing an object of type X).
Algorithms requiring output iterators should be single-pass output algorithms: each iterator position is dereferenced 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>
- output_iterator_tag
class
<iterator>
std::output_iterator_tag
struct output_iterator_tag {};
Output iterator category
Output iterators
Output iterators are iterators that can be used in sequential output operations, where each element pointed by the iterator is written a value only once and then the iterator is incremented.
All forward, bidirectional and random-access iterators that are not constant iterators are also valid output iterators.
There is not a single type of output iterator: Each container may define its own specific iterator type able to iterate through it and access its elements. But all output iterators support -at least- the following operations:
property | valid expressions |
---|---|
Is copy-constructible, copy-assignable and destructible | X b(a); |
Can be dereferenced as an lvalue (if in a dereferenceable state). It shall only be dereferenced as the left-side of an assignment statement. Once dereferenced, its iterator value may no longer be dereferenceable. | *a = t |
Can be incremented. | ++a |
property | valid expressions |
---|---|
Is copy-constructible, copy-assignable and destructible | X b(a); |
Can be dereferenced as an lvalue (if in a dereferenceable state). It shall only be dereferenced as the left-side of an assignment statement. Once dereferenced, its iterator value may no longer be dereferenceable. | *a = t |
Can be incremented. | ++a |
Lvalues are swappable. | swap(a,b) |
Where X is an output iterator type, a and b are objects of this iterator type, and t is an object of the type pointed by the iterator type (or some other type that can be assigned to the lvalue returned by dereferencing an object of type X).
Algorithms requiring output iterators should be single-pass output algorithms: each iterator position is dereferenced once at most.
See also
- input_iterator_tag
- Input 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