How to use std::front_inserter in C ++

In this post, we are going to learn about the standard function in C++ std::front_inserter. While it is declared or defined in the header file it can be applied on the container to create a front-insert iterator to in insert elements from the beginning.

 

std::front_inserter is an iterator adaptor that is used to insert elements at the front of a container. It is a part of the C++ Standard Template Library (STL).

To use std::front_inserter, you need to include the <iterator> header in your code. Here is an example of how you can use it:

#include <iostream>
#include <iterator>
#include <list>

int main() {
  std::list<int> myList;
  myList.push_back(1);
  myList.push_back(2);
  myList.push_back(3);

  // Insert a new element at the front of the list
  std::front_inserter(myList) = 4;

  // Print the contents of the list
  for (int x : myList) {
    std::cout << x << ' ';
  }
  std::cout << std::endl;

  return 0;
}

Output:

4 1 2 3

You can also use std::front_inserter with algorithms in the STL, such as std::copy. For example:

#include <iostream>
#include <iterator>
#include <list>
#include <vector>

int main() {
  std::vector<int> myVector{1, 2, 3};
  std::list<int> myList;

  // Copy elements from myVector to myList, inserting them at the front
  std::copy(myVector.begin(), myVector.end(), std::front_inserter(myList));

  // Print the contents of the list
  for (int x : myList) {
    std::cout << x << ' ';
  }
  std::cout << std::endl;

  return 0;
}

Output:

3 2 1

What is std::front_insert?

std::front_insert is an output iterator that allows inserting a new element at the front of the container. Instead of copying elements as other containers provide the copy function. It returns the std::front_insert_iterator. It differs from push_front() as this function only adds a new element at the beginning but std::front_inserter adds element by creating an iterator and then adding it to a container. This function or method is used on containers having push_front() function like list and deque.

 

Syntax:

std::front_inserter (Container& z);

z: container to which element is added. 

Program:

#include<iostream>
#include<list>
#include<iterator>

using namespace std;
  
int main()
{
    
    int first[] = { 11, 55, 88, 87};
    std::list<int> d1 (first, first + sizeof(first) / sizeof(int) );

      
    int second[] = { 23, 52, 74, 31, 86};
    std::list<int> d2 (second, second + sizeof(second) / sizeof(int) );

    std::copy(d1.begin(),d1.end(),std::front_inserter(d2));

    cout<<" d1= ";
    for (std::list<int>::iterator it = d1.begin(); it != d1.end(); it++)
    std::cout << *it << ' ';

    cout<<"\n d2= ";
    for (std::list<int>::iterator it = d2.begin(); it != d2.end(); it++)
    std::cout << *it << ' ';

    return 0;
}

In the above program, we have declared a standard list, iterator. We have declared two arrays named first and second and then converted it into a list. Using std:: copy we copied all list elements form d1 to d2 while using front_inserter thus all the elements are copied at the beginning of d1 and thud we printed them separately. Thus this function returns the std::front_inserter_iterator.

OUTPUT:

 d1= 11 55 88 87 
 d2= 87 88 55 11 23 52 74 31 86

Leave a Reply

Your email address will not be published. Required fields are marked *