×

C++ Output Iterators

Iterators :

Iterators serve as a link between algorithms and STL containers, allowing the data inside the container to be modified. They let you to iterate through the container, access and assign values, and apply various operators to them in order to get the required outcome.

Output iterators :

The Output Iterator is a C++ iterator that is commonly used to alter the value in the container. Dereference is used to change the value of a container output iterator. The Output iterator does not allow you to read the value from container. One-way and write-only iterators are commonly referred to as output iterators. In general, output iterators in C++ can be increased, but not decremented. Assignment operator(=), increment operator(++), and decrement operator(--) are the operators that may be used for an output iterator in general.

The aim of output iterators is the polar opposite of that of input iterators. This iterator is used for output operations in a sequential manner. In other words, it is employed in the assignment of values. However, it is unable to access the values. It is a companion to the input iterators, which allow you to access but not assign values. It is a one-way iterator, just as the input iterator. You can only increase the iterator once you've assigned a value, and you can't decrease the output iterator in any manner.

Types of Output iterators :

In general, an Output Iterator has two major subclasses, as shown below:

  • Insert iterator
  • Ostream iterator

Insert Iterator :

The insert iterator is a type of iterator that is used to place an element at a certain location. An assignment operator inserts the new element at the current place on the insert iterator.

Syntax :

template<class Container, class Iterator>
insert_iterator<container> inserter(Container &c,Iterator itr);

Components :

The arguments of the insert iterator's syntax are as follows:

c : This is where the new element is usually placed.

itr : It is an iterator object that normally points towards the spot that has to be changed.

Example :

#include <iostream>  
#include <iterator>    
#include <vector>     
#include <algorithm>  
using namespace std;  
int main() {  
  vector<int> v1,v2;  
  for (int k=10; k<=15; k++)  
  {   
  v1.push_back(k);   
  v2.push_back(k+2);  
  }  
 vector<int>::iterator itr = v1.begin();  
  advance (itr,3);  
 copy (v2.begin(),v2.end(),inserter(v1,itr));  
  cout<<"Elements of v1 are :";  
  for (  itr = v1.begin(); itr!= v1.end(); ++itr )  
  cout << ' ' << *itr;  
  cout << '\n';  
  return 0;  
}  

Output :

Elements of v1 are : 10 12 13 13 14 15 16 17 14 15                           

Explanation :

In the above example, output iterator is used for output operations in a sequential manner. In other words, it is employed in the assignment of values. However, it was is unable to access the values. It is a companion to the input iterators, which allow you to access but not assign values. We could only increase the iterator once we have assigned a value, and we can't decrease the output iterator in any manner as shown.

2. Ostream iterator :

The ostream iterator is a type of output iterator that is commonly used to write to the output stream like cout in a sequential manner. The basic ostream object is used to generate an ostream iterator. When the ostream operator is used with an assignment operator, a new element is usually added to the output stream.

Syntax :

template<class Tc, class charTc=char, class traits=char_traits<charT>> class

Components :

The following are the arguments of the ostream iterator's syntax:

Tc : It refers to the sort of items that will be placed in a container.

charTc : This specifies the type of items that the ostream may handle.

Character features : These are the character traits that the stream is capable of handling for the elements.

Example :

#include <iostream>  
#include<iterator>  
#include<vector>  
#include<algorithm>  
using namespace std;  
int main()  
{  
   vector<int> vec;  
   for(int x=6;x<=10;x++)  
   {  
       vec.push_back(x*10);  
   }  
 ostream_iterator<int> out(cout,", ");  
 copy(vec.begin(),vec.end(),out);  
    return 0;  
}  

Output :

60, 70, 80, 90, 100

Explanation :

In the above example, we used the ostream iterator. We introduced a vector list named vec. Further with a for loop, we used the ostream iterator in order to print the output required.

Properties Of Output Iterator :

Here are some of the outstanding features given by the Output iterator.

Equality/Inequality operator :

The output iterator cannot be compared with an equality or inequality operator.

Dereferencing :

The output iterator can really be typically dereferenced for the value of a lvalue.

Incrementable :

The output iterator may be incriminated simply by using the operator(++) function.

Drawbacks of Output Iterator :

The following are the limits that are applicable to the output Iterator in general:

  • Assigning but not accessing:
    We can allocate an output iterator as a lvalue, but programmers will not be able to access it as a rvalue.
  • Can't be decremented:
    We may often increase the output iterator by using the operator(++) method, but it cannot be decremented.
  • Multi-pass algorithm:
    In C++, you can't use an output iterator as a multi-pass algorithm. Because an output iterator is unidirectional and can only travel in one way, it can't be used to proceed through the container numerous times.
  • Relational Operators:
    When programmers use any of the relational operators, the output iterators cannot be compared.
  • Arithmetic Operators:
    Because the output iterator can only go ahead in a sequential fashion, it cannot be used with arithmetic operators.

Related Topics

How to declare a 2D array dynamically in C++

In this article, we will learn how to declare the dynamic array in C++. We also learn the initialization of a 2D array using a pointer in C++. Here, we...

3 minutes read.

Approach in C++

Object oriented programming languages like Java or C++ use a bottom-up approach that identifies each object first.  In the bottom-up approach, we create a small problem first, and try to...

6 minutes read.

Reverse a Number in C++

In this tutorial, you'll learn how to utilize a C++ program to reverse a number entered by a user at runtime. Because there are various ways to write a C++...

3 minutes read.

How to call a void function in C++

Generally, any function has two types: 1. Void function: It doesn't return any value. 2. Non-void function: It returns some value. Program to call a void function in C++ #include <iostream> using namespace std;  void check() {  ...

2 minutes read.

Palindrome using Do-while loop in C++

What is Palindrome? A palindrome is a word, number, phrase, or other sequence of letters that reads the same backward as forward, such as 101 or MOM. Like other programming languages, C++...

5 minutes read.

Decimal to Binary in C++

What is the meaning of Decimal Numbers? Decimal numbers range from 0 to 9, there are a total of ten digits between 0 and 9. Any number with more than two...

3 minutes read.

C++ STL Components

C++ STL Components In today’s article, we are going to learn about all the points things that is related to STL in C++ so stay connected because you are going to...

6 minutes read.

C++ Expressions

C ++ equations are made up of operators, constants and variables arranged according to language rules. It may also include function calls that give results. To calculate the value, the...

4 minutes read.

Find the Size of Array in C/C++ without using sizeof() function

We know that arrays in C/C++ are the most essential data structures as they have the ability to hold the data in a continuous manner line where the address of...

3 minutes read.

Auto keyword in C++

The primary function of auto keyword is to assign and detect the value of the data type automatically in C++. The compiler knows the data type of the variable by...

2 minutes read.

C++ Identifier

In a program, C++ identifiers relate to the names of variables, functions, arrays, and other user-defined data types that the programmer has developed. They are a prerequisite for learning any...

4 minutes read.

C++ Algorithms

There are plenty of programming paradigms that are closely associated with the implementations of code and simulate them into a proper functional one. This is done with the help of...

5 minutes read.

Iostream in C++

Using Iostream in C++, we can perform input and output operation capabilities. This represents input and output, and the stream is used to carry out this capability. A stream is...

4 minutes read.

C++ References

C++ References An alias is a reference variable that is another name for a variable already in existence. If a relation is initialized with a variable, it is possible to use...

3 minutes read.

Ways to Copy a Vector in C++

Vectors in C++ are the same as arrays, along with additional outstanding features than them, like array lists in Java programming language. In Vectors, the size constraint is eliminated, which...

5 minutes read.

C++ Virtual Function

A virtual function is such function which is declared inside the base class and redefined by the derive class. C++ uses a virtual keyword to make a function as a virtual function. The virtual...

1 minute read.

Array of Object in C++

What is an Array? In C++, an array is a group of related data types, such as int, char, float, double, etc., that are easily accessed by index value alone and...

12 minutes read.

Single Handling in C++

Introduction: Single handling in C++ refers to a technique for processing multiple events or requests with a single function or handler rather than creating separate functions for each task. This allows...

5 minutes read.

C++ Queue

C++ queue: Queue in C++ is also a container adapter with the functionality of a queue. Queue is just the opposite of the stack in C++ because stack works on...

4 minutes read.

C++ String Concatenation

C++ String Concatenation In this section, we will learn about C ++ String Concatenation, what it does, how it works, and will also see its programs. What is the String Concatenation? The + operator...

3 minutes read.