Javatpoint Logo
Javatpoint Logo

C++ Output Iterator

  • Output Iterator is an iterator used to modify the value in the container.
  • Dereferencing an output iterator allows us to alter the value of the container.
  • It does not allow us to read the value from the container.
  • It is a one-way and write-only iterator.
  • It can be incremented, but cannot be decremented.
  • Operators that can be used for an output iterator are increment operator(++), decrement operator(--) and assignment operator(=).
  • There are two main subclasses of an Output Iterator are:
    • insert iterator
    • ostream iterator
C++ Output Iterator

Insert Iterator

  • An insert iterator is an iterator used to insert the element in a specified position.
  • An assignment operator on the insert_iterator inserts the new element at the current position.



x: It is the container on which the new element is to be inserted.

it: It is an iterator object pointing to the position which is to be modified.

Let's see a simple example:


Elements of v1 are : 1 2 3 3 4 5 6 7 4 5

In the above example, insert_iterator is applied on the copy algorithm to insert the elements of the vector v2 into the vector v1 at a specified position pointed by it.

Ostream iterator

  • An ostream iterators are the output iterators used to write to the output stream such as cout successively.
  • An ostream iterator is created using a basic_ostream object.
  • When an assigenment operator is used on the ostream iterator, it inserts a new element into the output stream.


Member functions of Ostream Iterator class


  • T: It is the type of elements to be inserted into the container.
  • charT: The type of elements that ostream can handle, for example, char ostream.
  • traits: These are the character traits that the stream handles for the elements.

Let's see a simple example:



In the above example, out is an object of the ostream_iterator used to add the delimiter ',' between the vector elements.

Let's see another simple example of ostream iterator:



Features Of Output Iterator

  • Equality/Inequality Operator: Output iterators cannot be compared either by using equality or inequality operator. Suppose X and Y are the two iterators:
  • Dereferencing: An output iterator can be dereferenced as an lvalue.
  • Incrementable: An output iterator can be incremented by using operator++() function.

Limitations Of Output Iterator

  • Assigning but no accessing: We can assign an output iterator as an lvalue, but we cannot access them as an rvalue.

Suppose 'A' is an output iterator type and 'x' is a integer variable:

  • It cannot be decremented: We can increment the output iterator by using operator++() function, but we cannot decrement the output iterator.

Suppose 'A' is an output iterator type:

  • Multi-pass algorithm: An output iterator cannot be used as a multi-pass algorithm. Since an output iterator is unidirectional and can move only forward. Therefore, it cannot be used to move through the container multiple times
  • Relational Operators: An output iterator cannot be compared by using any of the relational operators.

Suppose 'A' and 'B' are the two iterators:

  • Arithmetic Operators: An output iterator cannot be used with the arithmetic operators. Therefore, we can say that the output iterator only moves forward in a sequential manner.

Suppose 'A' is an output iterator:

Next Topic

Please Share

facebook twitter google plus pinterest

Learn Latest Tutorials

B.Tech / MCA