List has been discussed in many articles, but the sole purpose of this article is to cover all types of insertions that are possible to be carried in a list container and to give a detailed insight on the insertion operations.
List and its many functions are defined under the header file "list" . Various list insertions functions are discussed below.
CPP
Output:
CPP
Output:
CPP
Output:
CPP
Using assign()
assign() function is used to insert multiple elements in a list in a single operation. "assign()" works in following ways :
- To insert multiple elements at once in a list. syntax : list.assign(number of times, element).
- To copy elements of 1 list into another. syntax : list.assign(lis2.begin(),lis2.end())
- To copy array elements into list. syntax : list.assign(arr,arr+size).
// C++ code to demonstrate the working of assign()
#include <iostream>
#include <list> // for list operations
using namespace std;
int main()
{
// declaring list
list<int> list1;
list<int> list2;
list<int> list3;
// initializing array
int arr[10] = { 1, 2, 3, 4 };
// using assign() to insert multiple numbers
// creates 4 occurrences of "2"
list1.assign(4,2);
// Printing the assigned list
cout << "The list after inserting multiple elements is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
cout << endl;
// using assign() to copy elements of list to other
// assigns 4 occurrences of "2"
list2.assign(list1.begin(),list1.end());
// Printing the assigned list
cout << "The list after copying list elements is : ";
for (list<int>::iterator i=list2.begin(); i!=list2.end(); i++)
cout << *i << " ";
cout << endl;
// using assign() to copy elements of array to list
// assigns array elements
list3.assign(arr,arr+4);
// Printing the assigned list
cout << "The list after copying array elements is : ";
for (list<int>::iterator i=list3.begin(); i!=list3.end(); i++)
cout << *i << " ";
cout << endl;
}
The list after inserting multiple elements is : 2 2 2 2 The list after copying list elements is : 2 2 2 2 The list after copying array elements is : 1 2 3 4
Insertion at beginning
- Using push_front() : push_front() is used to insert the element at the beginning of list. Increases list size by 1.
- Using emplace_front() : Works in a similar way as push_front, but the values are constructed in-place in front position of container, where in push_front, an object is created first, and then copied to the container.
// C++ code to demonstrate the working of
// push_front() and emplace_front()
#include <iostream>
#include <list> // for list operations
using namespace std;
int main()
{
// declaring list
list<int> list1;
// using assign() to insert multiple numbers
// creates 2 occurrences of "2"
list1.assign(2,2);
// using push_front to insert elements at beginning
// inserts 5 at beginning
list1.push_front(5);
// Printing the new list
cout << "The list after inserting elements using push_front is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
cout << endl;
// using emplace_front to insert elements at beginning
// inserts 7 at beginning
list1.emplace_front(7);
// Printing the new list
cout << "The list after inserting elements using emplace_front is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
}
The list after inserting elements using push_front is : 5 2 2 The list after inserting elements using emplace_front is : 7 5 2 2
Insertion at end
- Using push_back() : push_back() is used to insert the element at the end of list. Increases list size by 1.
- Using emplace_back() : Works in a similar way as push_back, but the values are constructed in-place at back position of container, where in push_back, an object is created first, and then copied to the container.
// C++ code to demonstrate the working of
// push_back() and emplace_back()
#include <iostream>
#include <list> // for list operations
using namespace std;
int main()
{
// declaring list
list<int> list1;
// using assign() to insert multiple numbers
// creates 2 occurrences of "2"
list1.assign(2,2);
// using push_back to insert elements at the end
// inserts 5 at end
list1.push_back(5);
// Printing the new list
cout << "The list after inserting elements using push_back is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
cout << endl;
// using emplace_back to insert elements at the end
// inserts 7 at end
list1.emplace_back(7);
// Printing the new list
cout << "The list after inserting elements using emplace_back is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
}
The list after inserting elements using push_back is : 2 2 5 The list after inserting elements using emplace_back is : 2 2 5 7
Insertion at any position
- Using insert(pos_iter,ele_num,ele) : insert() is used to insert the elements at any position of list. . This function takes 3 elements, position, number of elements to insert and value to insert. If not mentioned, number of elements is default set to 1.
- Using emplace(pos_iter,ele) : Works in a similar way as insert(), but the values are constructed in-place in front position of container, where in push_front, an object is created first, and then copied to the container. And only 1 value is allowed to insert at 1 time.
// C++ code to demonstrate the working of
// insert() and emplace()
#include <iostream>
#include <list> // for list operations
using namespace std;
int main()
{
// declaring list
list<int> list1;
// using assign() to insert multiple numbers
// creates 3 occurrences of "2"
list1.assign(3,2);
// initializing list iterator to beginning
list<int>::iterator it = list1.begin();
// iterator to point to 3rd position
advance(it,2);
// using insert to insert 1 element at the 3rd position
// inserts 5 at 3rd position
list1.insert(it,5);
// Printing the new list
cout << "The list after inserting 1 element using insert() is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
cout << endl;
// using insert to insert 2 element at the 4th position
// inserts 2 occurrences of 7 at 4th position
list1.insert(it,2,7);
// Printing the new list
cout << "The list after inserting multiple elements using insert() is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
cout << endl;
// using emplace to insert elements at the 6th position
// inserts 8 at 6th position
list1.emplace(it,8);
// Printing the new list
cout << "The list after inserting elements using emplace() is : ";
for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i << " ";
}
Output:
The list after inserting 1 element using insert() is : 2 2 5 2 The list after inserting multiple elements using insert() is : 2 2 5 7 7 2 The list after inserting elements using emplace() is : 2 2 5 7 7 8 2