C++ STL List

C++ STL List

Introduction

C++ STL List

In this article, you will learn about the list container of STL (Standard Template Library) of C++ with some useful examples that would help you better understand the concepts and their usage.

Lists are a type of sequential container that allows non-contiguous memory allocation. If we compare the list to a vector, the list has slow traversal as the memory allocated is non-contiguously. But when the position is known the insertion and deletion of the elements are done quickly. A list is like a doubly linked list.

We use the header file <list> to use the functionalities of an STL list container class. The syntax for declaring a list is given below:

Syntax: list<data_type> list_name;

As we already know that all the containers in the STL are generic types, so we must specify the data type while declaring a container.

A list has many methods for performing different types of operations. A few of the methods are listed below:

  • front() – Returns the value of the first element in the list.
  • back() – Returns the value of the last element in the list.
  • push_front(i) – Adds the new element ‘i’ at the beginning of the list.
  • push_back(i) – Adds the new element ‘i’ at the end of the list.
  • pop_front()  – Removes the first element of the list, and reduces the size of the list by 1.
  • pop_back() – Removes the last element of the list, and reduces the size of the list by 1.
  • List_name.begin() – Returns an iterator pointing to the first element of the list.
  • List_name.end() – Returns an iterator pointing to the theoretical last element which follows the last element of the list.
  • List_name.rbegin() – Returns the reverse iterator pointing to the last element of the list.
  • List_name.rend() – Returns the reverse iterator pointing to the theoretically first element in the list which is before the actual first element of the list.
  • List_name.cbegin() – Returns a constant iterator pointing to the first element of the list i.e., the value pointed at cannot be changed.
  • List_name.cend()  – Returns a constant iterator pointing to the end of the list.
  • List_name.crbegin() – Returns a constant reverse iterator that points to the last element of the list i.e., reversed beginning of the container.
  • List_name.crend() – Returns a constant reverse iterator that points to the first element of the list i.e., reversed ending of the container.
  • empty() – Returns whether or not a list is empty. Returns true if the list is empty if not returns false.
  • insert(i) – inserts a new element ‘i’ into the list before the element at a specified position.
  • erase() – Removes a single element or a range of elements from the list.
  • assign(new_list) – Assigns new elements to the list replacing the current elements and resizes the list.
  • remove(i) – Removes all the elements from the list, which is equal to the given element ‘i’.
  • size() – Returns the number of elements in the list.
  • list_resize() – Used to resize a list container.
  • sort() – Sorts the list in ascending order.
  • list_max_size() – Returns the maximum number of elements a list container can hold.
  • list_unique() – Removes all duplicates of the consecutive elements from the list.
  • emplace_front() – This function is used to insert a new element into the list and the element is added to the front of the list.
  • emplace_back() – This function is used to insert a new element into the list and the element is added to the end of the list.
  • clear() – Removes all the elements from the list and makes the size of the list 0
  • swap() – This function is used to swap the contents of one list with another list of the same data type.
  • splice() – Used to transfer elements from one list to another.
  • merge() –  Used to merge two sorted lists into one.
  • emplace(i) – Inserts a new element at a given position in the list.
See also  UNORDERED SET in Cpp

Let’s look at an example of using a list.

// CPP program to show the implementation of List
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
  
// function for printing the elements in a list
void showlist(list<int> g)
{
    list<int>::iterator it;
    for (it = g.begin(); it != g.end(); ++it)
        cout << '\t' << *it;
    cout << '\n';
}
  
// Driver Code
int main()
{
  
    list<int> gqlist1, gqlist2;
  
    for (int i = 0; i < 10; ++i) {
        gqlist1.push_back(i * 2);
        gqlist2.push_front(i * 3);
    }
    cout << "\nList 1 (gqlist1) is : ";
    showlist(gqlist1);
  
    cout << "\nList 2 (gqlist2) is : ";
    showlist(gqlist2);
  
    cout << "\ngqlist1.front() : " << gqlist1.front();
    cout << "\ngqlist1.back() : " << gqlist1.back();
  
    cout << "\ngqlist1.pop_front() : ";
    gqlist1.pop_front();
    showlist(gqlist1);
  
    cout << "\ngqlist2.pop_back() : ";
    gqlist2.pop_back();
    showlist(gqlist2);
  
    cout << "\ngqlist1.reverse() : ";
    gqlist1.reverse();
    showlist(gqlist1);
  
    cout << "\ngqlist2.sort(): ";
    gqlist2.sort();
    showlist(gqlist2);
  
    return 0;
}

Output:

List 1 (gqlist1) is :     0    2    4    6    8    10    12    14    16    18

List 2 (gqlist2) is :     27    24    21    18    15    12    9    6    3    0

gqlist1.front() : 0
gqlist1.back() : 18
gqlist1.pop_front() :     2    4    6    8    10    12    14    16    18

gqlist2.pop_back() :     27    24    21    18    15    12    9    6    3

gqlist1.reverse() :     18    16    14    12    10    8    6    4    2

gqlist2.sort():     3    6    9    12    15    18    21    24    27

That is all for this article. Happy Coding!

Leave a Comment

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

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

we provide projects, courses, and other stuff for free. in order for running we use Google ads to make revenue. please disable adblocker to support us.