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.
Let’s look at an example of using a list.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // 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!