Skip to content
Related Articles

Related Articles

List in C++ – Some Useful Functions

Improve Article
Save Article
Like Article
  • Difficulty Level : Easy
  • Last Updated : 17 Jan, 2022

Lists are sequence containers that allow non-contiguous memory allocation. As compared to vector, the List has slow traversal, but once a position has been found, insertion and deletion are quick. 

List Useful Functions:

1. emplace(position, value): This function is used to insert an element at the position specified.

2. emplace_back(value) :- This function adds value at end of list. It is different from push_back() by the fact that it directly creates elements at position whereas push_back() first makes a temporary copy and copies from there. emplace_back() is faster in implementation than push_back() in most situations.

3. emplace_front: This function adds value at beginning of the List. It is different from push_front() by the fact that it directly creates elements at position whereas push_front() first makes a temporary copy and copies from there. emplace_front() is faster in implementation than push_front() in most situations.
 

CPP




// C++ code to demonstrate the working of
// emplace(), emplace_front() and emplace_back()
#include <iostream>
#include <list> // for list functions
using namespace std;
  
// Driver Code
int main()
{
    // Declaring a list
    list<int> gqlist;
  
    // Initialising list iterator
    list<int>::iterator it = gqlist.begin();
  
    // Entering list element using emplace_back()
    for (int i = 1; i <= 5; i++)
        gqlist.emplace_back(i);
  
    // Displaying list elements
    cout << "List after emplace_back operation is : ";
    for (int& x : gqlist)
        cout << x << " ";
    cout << endl;
  
    // Entering list element using emplace_front()
    for (int i = 10; i <= 50; i += 10)
        gqlist.emplace_front(i);
  
    // Displaying list elements
    cout << "List after emplace_front operation is : ";
    for (int& x : gqlist)
        cout << x << " ";
    cout << endl;
  
    // using advance() to advance iterator position
    advance(it, 2);
  
    // inserting element at 2nd position using emplace()
    gqlist.emplace(it, 100);
  
    // Displaying list elements
    cout << "List after emplace operation is : ";
    for (int& x : gqlist)
        cout << x << " ";
    cout << endl;
  
    return 0;
}
Output
List after emplace_back operation is : 1 2 3 4 5 
List after emplace_front operation is : 50 40 30 20 10 1 2 3 4 5 
List after emplace operation is : 50 100 40 30 20 10 1 2 3 4 5 

4. merge(list2): This function is used to merge list2 with list1. If both the lists are in sorted order, then the resulting list is also sorted.

5. remove_if(condition): This function removes the element from the List on the basis of the condition given in its argument.

CPP




// C++ code to demonstrate the working of
// merge() and remove_if()
#include <iostream>
#include <list> // for list functions
using namespace std;
  
// Driver Code
int main()
{
    // Initializing list1
    list<int> gqlist1 = { 1, 2, 3 };
  
    // Initializing list2
    list<int> gqlist2 = { 2, 4, 6 };
  
    // using merge() to merge list1 with list2
    gqlist1.merge(gqlist2);
  
    // Displaying list elements
    cout << "list1 after merge operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
  
    // using remove_if() to remove odd elements
    // removes 1 and 3
    gqlist1.remove_if([](int x) { return x % 2 != 0; });
  
    // Displaying list elements
    cout << "list1 after remove_if operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
  
    return 0;
}
Output
list1 after merge operation is : 1 2 2 3 4 6 
list1 after remove_if operation is : 2 2 4 6 

6. unique(): This function is used to delete the repeated occurrences of the number. List has to be sorted for this function to get executed.

7. splice(position, list2): This function is used to transfer elements from one list into another.

CPP




// C++ code to demonstrate the working of
// unique() and splice()
#include <iostream>
#include <list> // for list functions
using namespace std;
  
// Driver Code
int main()
{
    // Initializing list1
    list<int> gqlist1 = { 1, 1, 1, 2, 2, 3, 3, 4 };
  
    // Initializing list2
    list<int> gqlist2 = { 2, 4, 6 };
  
    // Initializing list1 iterator
    list<int>::iterator it = gqlist1.begin();
  
    // using advance() to increment iterator position
    advance(it, 3);
  
    // Displaying list elements
    cout << "list1 before unique operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
  
    // using unique() to remove repeating elements
    gqlist1.unique();
  
    // Displaying list elements
    cout << "list1 after unique operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl << endl;
  
    // using splice() to splice list2 in list1 at position
    // it inserts list2 after 2nd position
    gqlist1.splice(it, gqlist2);
  
    // Displaying list elements
    cout << "list1 after splice operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
  
    return 0;
}
Output
list1 before unique operation is : 1 1 1 2 2 3 3 4 
list1 after unique operation is : 1 2 3 4 

list1 after splice operation is : 1 2 4 6 2 3 4 

8. swap(list2): This function is used to swap one list element with other.

CPP




// C++ code to demonstrate the working of
// swap()
#include <iostream>
#include <list> // for list functions
using namespace std;
  
// Driver Code
int main()
{
    // Initializing list1
    list<int> gqlist1 = { 1, 2, 3, 4 };
  
    // Initializing list1
    list<int> gqlist2 = { 2, 4, 6 };
  
    // Displaying list before swapping
    cout << "The contents of 1st list "
            "before swapping are : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
    cout << "The contents of 2nd list "
            "before swapping are : ";
    for (int& x : gqlist2)
        cout << x << " ";
    cout << endl;
  
    // Use of swap() to swap the list
    gqlist1.swap(gqlist2);
  
    // Displaying list after swapping
    cout << "The contents of 1st list "
            "after swapping are : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
  
    cout << "The contents of 2nd list "
            "after swapping are : ";
    for (int& x : gqlist2)
        cout << x << " ";
    cout << endl;
  
    return 0;
}
Output
The contents of 1st list before swapping are : 1 2 3 4 
The contents of 2nd list before swapping are : 2 4 6 
The contents of 1st list after swapping are : 2 4 6 
The contents of 2nd list after swapping are : 1 2 3 4 

This article is contributed by Manjeet Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!