Autor: Kacper Szkudlarek
List to rodzaj kontenera, który przechowuje dane w liniowej sekwencji. Kontener jest zaimplementowany na zasadzie listy dwukierunkowej, każdy element zawiera wskaźnik na obiekt następny i poprzedni. 
Zalety korzystania z kontenera list:
Implementacja listy w bibliotece standardowej to szablon z dwoma parametrami.
template < class T, class Allocator = allocator<T> > class list;
gdzie T to typ elementu jaki będziemy przechowywać, a Allocator definiuje sposob przydzielania pamięci dla nowych elementów. Domyślnie jest on już jest on już zdefiniowany.
Przykładowy program pokazujący działanie kontenera list: list.cpp
List udostępnia następujące metody którymi możemy manipulować jego zawartością.
| Konstruktory | Tworzą liste i inicjalizują przekazanymi danymi. | 
| operator= | Kopiuje zawartość konera | 
Iteratory
| begin | Zwraca iterator na peirwszy element | 
| end | Zwraca iterator na ostatni element | 
| rbegin | Zwraca reverse_iterator na odwrócony początek | 
| rend | Zwraca reverse_iterator na odwrócony koniec | 
Pojemność
| empty | Sprawdza czy lista zawiera jakieś elementy | 
| size | Zwraca rozmiar kontenera | 
| max_size | Zwraca maksymalny możliwy rozmiar kontenera | 
| resize | Zmienia rozmiar kontenera | 
Dostęp do elementów
Modifiers
| assign | Przydziela nową zawartość do kontenera | 
| push_front | Wstawia element na początku | 
| pop_front | Usuwa pierwszy element | 
| push_back | Dodaje element na końcu | 
| pop_back | Usuwa ostatni element | 
| insert | Wstawia elementy | 
| erase | Usuwa elementy | 
| swap | Zamienia zawartość listy | 
| clear | Usuwa wszystkie elementy z listy | 
Operacje na liście
explicit list ( const Allocator& = Allocator() );
Konstruktor domyślny, tworzy pustą listę
explicit list ( size_type n, const T& value = T(), const Allocator& = Allocator() );
 Tworzy listę zawierającą n elementów o wartości value
template < class InputIterator > list ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
Tworzy listę zawierającą elementy z przedziały wskazywanego przez iteratory
list ( const list<T,Allocator>& x );
Konstruktor kopiujący
list<T,Allocator>& operator= ( const list<T,Allocator>& x );
Przypisuje kontenerowi kopię kontenera podanego jako argument x. Całą pierwotna zawartość kontenera jest kasowana.
iterator begin(); const_iterator begin() const;
Funkcja zwraca iterator do pierwszego elementu listy.
iterator end(); const_iterator end() const;
Funkcja zwraca iterator wskazujący za ostatni element Listy, co ułatwia iterację.
reverse_iterator rbegin(); const_reverse_iterator rbegin() const;
Funkcja zwraca odwrotny iterator wskazujący na koniec listy.
reverse_iterator rend(); const_reverse_iterator rend() const;
Funkcja zwraca odwrotny iterator wskazujący na początek listy.
bool empty() const;
Funkcja zwraca wartość logiczną true jeśli lista jest pusty, false w przeciwnym przypadku.
size_type size() const;
Funkcja zwraca liczbę elementów znajdujących się w kontenerz.
size_type max_size () const;
Funkcja zwraca potencjalną maksymalną liczbę elementów jakie mogą znajdować się w Kontenerze. Wielkość ta zależna jest od systemu i implemnetacji.
Podobne: capacity, max_size
void resize ( size_type sz, T c = T() );
Funkcja zmienia rozmiar listy do rozmiaru sz. 
Jeśli wartość sz jest większa od aktualnego rozmiaru, to nowe elementy będą miały wartość c. W przeciwnym wypadku wielkość kontenera jest redukowana, a nadmiarowe elementy usuwane. 
reference front ( ); const_reference front ( ) const;
Funkcja zwraca referencje do pierwszego elementu w liście.
reference back ( ); const_reference back ( ) const;
Funkcja zwraca referencje do ostatniego elementu w liście.
void assign( size_type num, const TYPE& val ); void assign( input_iterator start, input_iterator end );
Metoda assign() wstawia do listy:
num elementów o wartości val,start oraz end.void push_front ( const T& x );
Funkcja dodaje element o wartości x na początek listy.
void pop_front();
Funkcja usuwa pierwszy element z listy.
void push_back ( const T& x );
Funkcja dodaje element o wartości x na koniec listy.
void pop_back();
Funkcja usuwa ostatni element z listy.
iterator insert ( iterator position, const T& x );
 Wstawia element x na pozycje wskazywaną przez iterator position.
void insert ( iterator position, size_type n, const T& x );
 Wstawia n elementów x zaczynając od pozycji position.
template <class InputIterator> void insert ( iterator position, InputIterator first, InputIterator last );
 Wstawia zaczynając od pozycji position wskazanej przez iterator elementy ograniczone iteratorami first i last.
iterator erase ( iterator position );
 Usuwa element wskazywany prze iterator position.
iterator erase ( iterator first, iterator last );
 Usuwa elementy wskazywane przez iteratory first i last
Funkcja zwraca iterator do pierwszego nie usuniętego elementu.
void swap ( list<T,Allocator>& lst );
Funkcja zamienia zawartość listy z której był wywołany z zawartością listy podanej jako parametr lst.
void clear();
Funkcja usuwa wszystkie elementy listy.
void splice ( iterator position, list<T,Allocator>& x );
 Przenosi elementy z listy x, wstawiając je od pozycji wskazywanej przez iterator position.
void splice ( iterator position, list<T,Allocator>& x, iterator i );
 Przenosi elementy z listy x, zaczynając od pozycji i, wstawiając je od pozycji wskazywanej przez iterator position.
void splice ( iterator position, list<T,Allocator>& x, iterator first, iterator last );
 Przenosi elementy z listy x, zawarte pomiędzy iteratorami first i last, wstawiając je od pozycji wskazywanej przez iterator position.
void remove ( const T& value );
Funkcja usuwa elementy o wartości value. Wywoływane są destruktory tych elementów, zmniejszana jest wartość size.
template <class Predicate> void remove_if ( Predicate pred );
 Usuwa elementy spełniające warunek pred. Warunek może być zaimplementowany jako dowolny typ wyrażenia pobeirającego jako argument element typu listy i zwracający wartość bool.
void unique ( );
Usuwa wszystkie poza pierwszym równe elementy występujące w ciągu.
template <class BinaryPredicate> void unique ( BinaryPredicate binary_pred );
 Usuwa wszystkie poza pierwszym równe elementy występujące w ciągu, równość określona jest przez warunek binary_pred, pobierający dwa elementy z listy i zwracający odpowiednią wartość logiczną.
void merge ( list<T,Allocator>& x );
Łączy dwie posortowane listy w jedną posortowaną listę.
template <class Compare> void merge ( list<T,Allocator>& x, Compare comp );
 Łączy dwie posortowane listy w jedną posortowaną listę, przy łączeniu używa warunku comp dla ustalenie kolejności elementów, która pobiera dwa elementy i zwraca odpowiednią wartość logiczna.
void sort ( );
Funkcja sortuje listę, porównując dwa sąsiadujące ze sobą elementy.
template <class Compare> void sort ( Compare comp );
 Funkcja sortuje listę, porównując dwa sąsiadujące ze sobą elementy, do porównanie używana jest funkcja comp pobierająca dwa elementy i zwracająca odpowiednią wartość logiczną.
void reverse();
Funkcja odwraca kolejność elementów w liście.