std::inserter in C++ Last Updated : 27 Jul, 2017 Summarize Comments Improve Suggest changes Share Like Article Like Report std::inserter constructs an insert iterator that inserts new elements into x in successive locations starting at the position pointed by it. It is defined inside the header file . An insert iterator is a special type of output iterator designed to allow algorithms that usually overwrite elements (such as copy) to instead insert new elements automatically at a specific position in the container. Syntax: std::inserter(Container& x, typename Container::iterator it); x: Container in which new elements will be inserted. it: Iterator pointing to the insertion point. Returns: An insert_iterator that inserts elements into x at the position indicated by it. CPP // C++ program to demonstrate std::inserter #include <iostream> #include <iterator> #include <deque> #include <algorithm> using namespace std; int main() { // Declaring first container deque<int> v1 = { 1, 2, 3 }; // Declaring second container for // copying values deque<int> v2 = { 4, 5, 6 }; deque<int>::iterator i1; i1 = v2.begin() + 1; // i1 points to next element of 4 in v2 // Using std::inserter inside std::copy std::copy(v1.begin(), v1.end(), std::inserter(v2, i1)); // v2 now contains 4 1 2 3 5 6 // Displaying v1 and v2 cout << "v1 = "; int i; for (i = 0; i < 3; ++i) { cout << v1[i] << " "; } cout << "\nv2 = "; for (i = 0; i < 6; ++i) { cout << v2[i] << " "; } return 0; } Output: v1 = 1 2 3 v2 = 4 1 2 3 5 6 How is it helpful ? Inserting values anywhere : Now, just imagine, if we had to copy value into a container such as a vector, firstly, we had to move elements and then copy, but with the help of std::insert() we can insert at any position with ease. CPP // C++ program to demonstrate std::inserter #include <iostream> #include <iterator> #include <vector> #include <algorithm> using namespace std; int main() { // Declaring first container vector<int> v1 = { 1, 2, 3, 7, 8, 9 }; // Declaring second container vector<int> v2 = { 4, 5, 6 }; vector<int>::iterator i1; i1 = v2.begin() + 2; // i1 points to next element of 5 in v2 // Using std::inserter inside std::copy std::copy(v1.begin(), v1.end(), std::inserter(v2, i1)); // v2 now contains 4 5 1 2 3 7 8 9 6 // Displaying v1 and v2 cout << "v1 = "; int i; for (i = 0; i < 6; ++i) { cout << v1[i] << " "; } cout << "\nv2 = "; for (i = 0; i < 9; ++i) { cout << v2[i] << " "; } return 0; } Output: v1 = 1 2 3 7 8 9 v2 = 4 5 1 2 3 7 8 9 6 Explanation: Here, we started copying v1 into v2 but not from the beginning, but after the second position of v2, i.e., after 5, so all the elements of v1 were inserted after 5, and before 6. In this way, we inserted value where we wanted quite easily. Points to Remember: One of the pitfalls of std::inserter is that it can be used with only those containers that have insert as one of its methods like in case of vector, list and deque, and so on. insert() vs std::inserter(): Now, you may be thinking that insert() and std::inserter() are similar, but they are not. When you have to pass an iterator in the algorithm, then you should use inserter() like in above case, while for normally inserting the values in the container, insert() can be used. In place of using std::inserter, we can create a insert_iterator and then use it, as eventually, std::inserter returns a insert_iterator only. CPP // C++ program to demonstrate insert_iterator #include <iostream> #include <iterator> #include <deque> #include <algorithm> using namespace std; int main() { // Declaring first container deque<int> v1 = { 1, 2, 3 }; // Declaring second container for // copying values deque<int> v2 = { 4, 5, 6 }; deque<int>::iterator ii; ii = v2.begin() + 1; // ii points after 4 in v2 // Declaring a insert_iterator std::insert_iterator<std::deque<int> > i1(v2, ii); // Using the iterator in the copy() std::copy(v1.begin(), v1.end(), i1); // v2 now contains 4 1 2 3 5 6 // Displaying v1 and v2 cout << "v1 = "; int i; for (i = 0; i < 3; ++i) { cout << v1[i] << " "; } cout << "\nv2 = "; for (i = 0; i < 6; ++i) { cout << v2[i] << " "; } return 0; } Output: v1 = 1 2 3 v2 = 4 1 2 3 5 6 Comment More infoAdvertise with us Next Article std::string::insert() in C++ M Mrigendra Singh Improve Article Tags : Misc C++ cpp-iterator STL Practice Tags : CPPMiscSTL Similar Reads std::back_inserter in C++ std::back_inserter constructs a back-insert iterator that inserts new elements at the end of the container to which it is applied. It is defined inside the header file . A back-insert iterator is a special type of output iterator designed to allow algorithms that usually overwrite elements (such as 4 min read std::front_inserter in C++ std::front_inserter constructs a front-insert iterator that inserts new elements at the front of the container to which it is applied. It is defined inside the header file . A front-insert iterator is a special type of output iterator designed to allow algorithms that usually overwrite elements (suc 4 min read map insert() in C++ STL The std::map::insert() is a built-in function of C++ STL map container which is used to insert new elements into the map. In this article, we will learn how to use map::insert() function in our C++ programs.Example:C++// C++ program to illustrate how to use // map::insert #include <bits/stdc++.h 5 min read map insert() in C++ STL The std::map::insert() is a built-in function of C++ STL map container which is used to insert new elements into the map. In this article, we will learn how to use map::insert() function in our C++ programs.Example:C++// C++ program to illustrate how to use // map::insert #include <bits/stdc++.h 5 min read std::string::insert() in C++ In C++, the string insert() function is used to insert characters or a string at the given position of the string. For example,C++#include <bits/stdc++.h> using namespace std; int main() { string s = "Geeks"; // Inserting another string at the friend // of s s.insert(s.size(), "forGeeks"); cou 4 min read List in C++ STL In C++, list container implements a doubly linked list in which each element contains the address of next and previous element in the list. It stores data in non-contiguous memory, hence providing fast insertion and deletion once the position of the element is known.Example:C++#include <iostream 7 min read Like