| |
|
Category: iterators | | Component type: type |
Description
An ostream_iterator
is an OutputIterator that performs formatted output of objects of type T
to a particular ostream
. Note that all of the restrictions of an OutputIterator must be obeyed, including the restrictions on the ordering of operator*
and operator++
operations.
Example
Copy the elements of a Vector
to the standard output, one per line.
Vector<int> V;
copy(V.begin(), V.end(), ostream_iterator<int>(cout, "\n"));
Definition
Defined in the standard header iterator, and in the nonstandard backward-compatibility header iterator.h.
Template parameters
Parameter | Description | Default |
T | The type of object that will be written to the ostream . The set of value types of an ostream_iterator consists of a single type, T . | |
Model of
OutputIterator.
Type requirements
T
must be a type such that cout << T
is a valid expression.
Public base classes
None.
Members
Member | Where defined | Description |
ostream_iterator(ostream&) | ostream_iterator | See below. |
ostream_iterator(ostream&, const char* s) | ostream_iterator | See below. |
ostream_iterator(const ostream_iterator&) | OutputIterator | The copy constructor |
ostream_iterator& operator=(const ostream_iterator&) | OutputIterator | The assignment operator |
ostream_iterator& operator=(const T&) | OutputIterator | Used to implement the OutputIterator requirement *i = t . [1] |
ostream_iterator& operator*() | OutputIterator | Used to implement the OutputIterator requirement *i = t . [1] |
ostream_iterator& operator++() | OutputIterator | Preincrement |
ostream_iterator& operator++(int) | OutputIterator | Postincrement |
output_iterator_tag iterator_category(const ostream_iterator&) | iterator_tags | Returns the iterator's category. |
New members
These members are not defined in the OutputIterator requirements, but are specific to ostream_iterator
.
Function | Description |
ostream_iterator(ostream& s) | Creates an ostream_iterator such that assignment of t through it is equivalent to s << t . |
ostream_iterator(ostream& s, const char* delim) | Creates an ostream_iterator such that assignment of t through it is equivalent to s << t << delim . |
Notes
[1] Note how assignment through an ostream_iterator
is implemented. In general, unary operator*
must be defined so that it returns a proxy object, where the proxy object defines operator=
to perform the output operation. In this case, for the sake of simplicity, the proxy object is the ostream_iterator
itself. That is, *i
simply returns i
, and *i = t
is equivalent to i = t
. You should not, however, rely on this behavior. It is an implementation detail, and it is not guaranteed to remain the same in future versions.
See also
istream_iterator, OutputIterator, InputIterator.