
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ Library - <list>
Introduction
List is a popularly used sequence container. Container is an object that holds data of same type. List container is implemented as doubly linked-list, hence it provides bidirectional sequential access to it's data.
List doesn't provide fast random access, it only supports sequential access in both directions. List allows insertion and deletion operation anywhere within a sequence in constant time.
Elements of list can be scattered in different chunks of memory. Container stores necessary information to allow sequential access to it's data. Lists can shrink or expand as needed from both ends at run time. The storage requirement is fulfilled automatically by internal allocator.
Zero sized lists are also valid. In that case list.begin() and list.end() points to same location. But behavior of calling front() or back() is undefined.
Definition
Below is definition of std::list from <list> header file
template < class T, class Alloc = allocator<T> > class list;
Parameters
T − Type of the element contained.
T may be substituted by any other data type including user-defined type.
Alloc − Type of allocator object.
By default, the allocator class template is used, which defines the simplest memory allocation model and is value-independent.
Member types
Following member types can be used as parameters or return type by member functions.
Sr.No. | Member types | Definition |
---|---|---|
1 | value_type | T (First parameter of the template) |
2 | allocator_type | Alloc (Second parameter of the template) |
3 | reference | value_type& |
4 | const_reference | const value_type& |
5 | pointer | value_type* |
6 | const_pointer | const value_type* |
7 | iterator | a random access iterator to value_type |
8 | const_iterator | a random access iterator to const value_type |
9 | reverse_iterator | std::reverse_iterator <iterator> |
10 | const_reverse_iterator | std::reverse_iterator <const_iterator> |
11 | size_type | size_t |
12 | difference_type | ptrdiff_t |
Functions from <list>
Below is list of all methods from <list> header.
Constructors
Sr.No. | Method & Description |
---|---|
1 | list::list default constructor Constructs an empty list with zero elements. |
2 | list::list fill constructor Constructs a new list with n elements and assigns val to each element of list. |
3 | list::list fill constructor Constructs a new list with n elements and assign zero value to each element of list. |
4 | list::list range constructor Constructs a list with as many elements as in range of first to last. |
5 | list::list copy constructor Constructs a list with copy of each elements present in existing list. |
6 | list::list move constructor Constructs a list with the contents of other using move semantics. |
7 | list::list initializer list constructor Constructs a list with the contents of other using move semantics. |
Destructor
Sr.No. | Method & Description |
---|---|
1 | list::~list Destroys list object by deallocating it's memory. |
Member functions
Sr.No. | Method & Description |
---|---|
1 | list::assign range version Assigns new value to list by replacing old ones. |
2 | list::assign fill version Assigns new values to list by replacing old ones. |
3 | list::assign initializer list version Assigns new values to list by replacing old ones. |
4 | list::back Returns a reference to the last element of the list. |
5 | list::begin Returns a random access iterator which points to the first element of the list. |
6 | list::cbegin Returns a constant random access iterator which points to the beginning of the list. |
7 | list::cend Returns a constant random access iterator which points to the end of the list. |
8 | list::clear Destroys the list by removing all elements from the list and sets size of list to zero. |
9 | list::crbegin Returns a constant reverse iterator which points to the last element of the list. |
10 | list::crend Returns a constant reverse iterator which points to the theoretical element preceding the first element in the list. |
11 | list::emplace Extends list by inserting new element at a given position. |
12 | list::emplace_back Inserts new element at the end of list and increases size of list by one. |
13 | list::emplace_front Inserts new element at the beginning of the list and increases size of list by one. |
14 | list::empty Tests whether list is empty or not. |
15 | list::end Returns a random access iterator which points to the last element of the list. |
16 | list::erase position version Removes single element from the the list. |
17 | list::erase range version Removes range of element from the the list. |
18 | list::front Returns a reference to the first element of the list. |
19 | list::get_allocator Returns an allocator associated with list |
20 | list::insert single element version Extends iterator by inserting new element at position in list. |
21 | list::insert fill version Extends list by inserting new elements in the container. |
22 | list::insert range version Extends list by inserting new elements in the container. |
23 | list::insert move version Extends list by inserting new element in the container. |
24 | list::insert initializer list version Extends list by inserting new elements in the container |
25 | list::max_size Returns the maximum number of elements can be held by list. |
26 | list::merge Merges two sorted lists into one. |
27 | list::merge compare function Merges two sorted lists into one. |
28 | list::merge move version Merges two sorted lists into one by using move semantics. |
29 | list::merge compare function move version Merges two sorted lists into one by using move semantics. |
30 | list::operator= copy version Assigns new contents to the list by replacing old ones. |
31 | list::operator= move version Assign new contents to the list by replacing old ones. |
32 | list::operator= initializer list version Assign new contents to the list by replacing old ones. |
33 | list::pop_back Removes last element from list. |
34 | list::pop_front Removes first element from list. |
35 | list::push_back Inserts new element at the end of list. |
36 | list::push_back move version Inserts new element at the end of list. |
37 | list::push_front Inserts new element at the beginning of list. |
38 | list::push_front move version Inserts new element at the beginning of list. |
39 | list::rbegin Returns a reverse iterator which points to the last element of the list. |
40 | list::remove removes element(s) from the list that matches the value. |
41 | list::remove_if removes elements from the list that fulfills the condition. |
42 | list::rend Returns a reverse iterator which points to the reverse end of the list. |
43 | list::resize Changes the size of list. |
44 | list::resize value version Changes the size of list. |
45 | list::reverse Reverses the order of the elements present in the list. |
46 | list::size Returns the number of elements present in the list. |
47 | list::sort Sorts the elements of the list. |
48 | list::sort compare function Sorts the elements of the list. |
49 | list::splice Transfers all elements from list to *this. |
50 | list::splice single element Transfers a element pointed to by iterator i from list x into *this. |
51 | list::splice move version Transfers all elements from list x to *this by using move semantics. |
52 | list::splice range version Transfers the elements in the range of first to last from x to *this. |
53 | list::splice single element move version Transfers the element pointed to by iterator i from list x into *this by using move semantics. |
54 | list::splice range and move version Transfers the elements in the range of first to last from x to *this by using move semantics. |
55 | list::swap Exchanges the content of list with contents of another list x. |
56 | list::unique Removes all consecutive duplicate elements from the list. |
57 | list::unique Removes all consecutive duplicate elements from the list. |
Non-member overloaded functions
Sr.No. | Method & Description |
---|---|
1 | operator== Tests whether two lists are equal or not. |
2 | operator!= Tests whether two lists are equal or not. |
3 | operator< Tests whether first list is less than other or not. |
4 | operator<= Tests whether first list is less than or equal to other or not. |
5 | operator> Tests whether first list is greater than other or not. |
6 | operator>= Tests whether first list is greater than or equal to other or not. |
7 | swap Exchanges the contents of two list. |