×

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

C++ this pointer

'this' is a pointer that points to the object for which this function was called. The 'this' pointer holds the memory address of the current object. The 'this' pointer is implicitly passed to...

2 minutes read.

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...

4 minutes read.

Two dimension array

C++ Two dimension (2D) Array Two dimension (2D) array is an array of arrays. It is represented in the form of row and column. The elements of 2D array are accessed through the...

2 minutes read.

C++ if-else

C++ if else Control Statement if else control statement in C++ is used to control the program flow in a two-way direction. When condition returns a true value, then the program executes if condition block otherwise...

1 minute read.

Pure Virtual Function in C++ With Example Program

What is a Virtual Function? A virtual function is created inside a class with the keyword virtual. A virtual function does not have any value to be returned. Once a virtual...

3 minutes read.

Difference between Two Sets in C++

The distinction between the two sets is made up of the components that are present in the first set but absent from the second set. The function consistently duplicates the...

3 minutes read.

How to Setup Environment for C++ Programming on Mac

Mac OS X code Installation There are so many environments available for C++. We are going to install jGrasp and Xcode in our mac operating system. Instruction for installation of jGrasp and...

2 minutes read.

abs() function in C++

In C++, the abs() function returns the absolute value of any integer number. Using this function a negative integer is multiplied by -1 and positive number or zero is returned...

4 minutes read.

C++ Goto

In this article, we will discuss the C++ goto statement with its syntax, use, key features, key points, pseudo code, and examples. What is the goto statement in C++? In C++, the...

4 minutes read.

Counting Frequencies of Array Elements in C++

We have an array of integer items with duplicate values, and our objective is to compute the frequencies of the different elements in the array. Methods: Methods that can be used to...

3 minutes read.

C++ Math Functions

C++ Math Functions: Like other programming languages, C++ offers plenty of mathematical functions needed for various purposes. These functions are defined mainly in the math library in C++. Let us...

4 minutes read.

Function Pointer in C++

Definition: A function pointer in C++ is the same as a usual pointer which is used to point some variables. Function pointers are used to point functions or say store the...

4 minutes read.

How to create a table in C++

C++ is a programming language that has evolved as an improvement of c language. It includes an object-oriented archetype. C++ programming language is a compiled language that complies with the...

3 minutes read.

Program to convert infix to postfix expression in C++

Parentheses are frequently employed in mathematical formulas to make their interpretation easier to understand. However, with computers, parenthesis in an expression might lengthen the time it takes to find a...

7 minutes read.

Differences Between C Structures and C++ Structures

The below table clearly describes the differences between C and C++ programming languages Structures concepts where the core principle concepts like static members, data handling, pointers, access modifiers, the importance...

3 minutes read.

How to Reverse a String in C++ using Do-While Loop

Strings In C++, a string is an object that represents a group (or sequence) of various characters. Strings are part of the standard string class in C++ (std::string). The characters of...

4 minutes read.

C++ Inheritance

What do you mean by Inheritance ? The ability to define new classes based on existing classes in order to reuse and organise code is referred to as inheritance. Single inheritance...

7 minutes read.

Free vs delete() in C++

Free vs delete() in C++ In this section, we will learn about the free() function and also create a C ++ program of the delete operator. What is free() Function in C++? In...

4 minutes read.

Lambda Expression in C++

The lambda expression was introduced in C++ 11. It is used to write the inline function in C++. The code written in lambda expression cannot be reused further. The syntax...

3 minutes read.

How to find the length of the vector in C++

Like dynamic arrays, vectors can automatically adjust their size when an element is added or removed, and the container manages its storage. Because vector items are stored in contiguous storage, iterators...

3 minutes read.