List in C++ Standard Template Library (STL)
Lists are sequence containers that allow non-contiguous memory allocation. As compared to vector, list has slow traversal, but once a position has been found, insertion and deletion are quick. Normally, when we say a List, we talk about doubly linked list. For implementing a singly linked list, we use forward list.
Below is the program to show the working of some functions of List:
#include <iostream>
#include <list>
#include <iterator>
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';
}
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;
}
The output of the above program is :
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
Functions used with List:
front()
– Returns the value of the first element in the list.back()
– Returns the value of the last element in the list .push_front(g)
– Adds a new element ‘g’ at the beginning of the list .push_back(g)
– Adds a new element ‘g’ at the end of the list.pop_front()
– Removes the first element of the list, and reduces size of the list by 1.pop_back()
– Removes the last element of the list, and reduces size of the list by 1begin()
– begin() function returns an iterator pointing to the first element of the listend()
– end() function returns an iterator pointing to the theoretical last element which follows the last element.rbegin()
andrend()
– rbegin() returns a reverse iterator which points to the last element of the list. rend() returns a reverse iterator which points to the position before the beginning of the list.cbegin()
andcend()
– cbegin() returns a constant random access iterator which points to the beginning of the list. cend() returns a constant random access iterator which points to the end of the list.crbegin()
andcrend()
– crbegin() returns a constant reverse iterator which points to the last element of the list i.e reversed beginning of container. crend() returns a constant reverse iterator which points to the theoretical element preceding the first element in the list i.e. the reverse end of the list.empty()
– Returns whether the list is empty(1) or not(0).insert()
– Inserts new elements in the list before the element at a specified position.erase()
– Removes a single element or a range of elements from the list.assign()
– Assigns new elements to list by replacing current elements and resizes the list.remove()
– Removes all the elements from the list, which are equal to given element.remove_if()
– Used to remove all the values from the list that correspond true to the predicate or condition given as parameter to the function.reverse()
– Reverses the list.size()
– Returns the number of elements in the list.resize()
– Used to resize a list container.sort()
– Sorts the list in increasing order.max_size()
– Returns the maximum number of elements a list container can hold.unique()
– Removes all duplicate consecutive elements from the list.emplace_front()
andemplace_back()
– emplace_front() function is used to insert a new element into the list container, the new element is added to the beginning of the list. emplace_back() function is used to insert a new element into the list container, the new element is added to the end of the list.clear()
– clear() function is used to remove all the elements of the list container, thus making it size 0.=
– This operator is used to assign new contents to the container by replacing the existing contents.swap()
– This function is used to swap the contents of one list with another list of same type and size.splice()
– Used to transfer elements from one list to another.merge()
– Merges two sorted lists into oneemplace()
– Extends list by inserting new element at a given position.
Above are all bound methods for list. For more detailed usage of these methods, feel free to turn to Google or Baidu for help.