Przestrzenie nazw
Warianty
Działania

std::list

Z cppreference.com
< cpp‎ | container


Zdefiniowane w nagłówku <list>
template<

    class T,
    class Allocator = std::allocator<T>

> class list;
(1)

std::list jest kontenerem pozwalającym na wstawianie i usuwanie elementów w dowolnym miejscu w kontenerze, w czasie stałym. Szybki dostęp bezpośredni do elementów nie jest wspierany. Zazwyczaj jest implementowana jako lista dwukierunkowa. W porównaniu do std::forward_list ten kontener pozwala na iterowanie w obu kierunkach. Zużywa z tego powodu więcej pamięci.

Dodawanie, usuwanie ani przenoszenie elementów wewnątrz listy / pomiędzy listami nie unieważnia iteratorów ani referencji. Iterator jest unieważniany tylko wtedy, gdy odpowiadający mu element jest usuwany.

std::list spełnia wymagania Container, AllocatorAwareContainer, SequenceContainer i ReversibleContainer.

Spis treści

[edytuj] Parametry szablonu

T - Typ elementów.
T musi spełniać wymagania CopyAssignable i CopyConstructible. (do C++11)
Wymagania nałożone na elementy zależą od rzeczywiście wykonywanych na kontenerze operacji. Z reguły jest wymagane, aby typ elementu był typem kompletnym i spełniał wymagania Erasable, lecz wiele metod nakłada bardziej rygorystyczne warunki. (od C++11)

[edit]

Allocator - Alokator wykorzystywany do uzyskiwania/zwalniania pamięci i tworzenia/niszczenia elementów w tej pamięci. Typ musi spełniać wymogi Allocator. Zachowanie jest niezdefiniowane, jeśli Allocator::value_type nie jest identyczny jak T. [edit]

[edytuj] Typy składowe

Typ składowy Definicja
value_type T [edit]
allocator_type Allocator [edit]
size_type Typ całkowitoliczbowy bez znaku (zwykle std::size_t) [edit]
difference_type Typ całkowitoliczbowy ze znakiem (zwykle std::ptrdiff_t) [edit]
reference
Allocator::reference (do C++11)
value_type& (od C++11)
[edit]
const_reference
Allocator::const_reference (do C++11)
const value_type& (od C++11)
[edit]
pointer
Allocator::pointer (do C++11)
std::allocator_traits<Allocator>::pointer (od C++11)
[edit]
const_pointer
Allocator::const_pointer (do C++11)
std::allocator_traits<Allocator>::const_pointer (od C++11)
[edit]
iterator LegacyBidirectionalIterator [edit]
const_iterator Constant BidirectionalIterator [edit]
reverse_iterator std::reverse_iterator<iterator> [edit]
const_reverse_iterator std::reverse_iterator<const_iterator> [edit]

[edytuj] Metody

Konstruuje list
(publiczna metoda) [edit]
Niszczy list
(publiczna metoda) [edit]
przypisuje wartości do kontenera
(publiczna metoda) [edit]
przypisuje wartości do kontenera
(publiczna metoda) [edit]
zwraca skojarzony alokator
(publiczna metoda) [edit]
Dostęp do elementów
dostęp do pierwszego elementu
(publiczna metoda) [edit]
dostęp do ostatniego elementu
(publiczna metoda) [edit]
Iteratory
zwraca iterator na początek kontenera
(publiczna metoda) [edit]
zwraca iterator za koniec kontenera
(publiczna metoda) [edit]
zwraca odwrócony iterator na początek
(publiczna metoda) [edit]
zwraca odwrócony iterator za koniec kontenera
(publiczna metoda) [edit]
Pojemność
sprawdza, czy kontener jest pusty
(publiczna metoda) [edit]
zwraca liczbę elementów
(publiczna metoda) [edit]
zwraca maksymalną możliwą liczbę elementów
(publiczna metoda) [edit]
Modyfikatory
czyści zawartość
(publiczna metoda) [edit]
wstawia elementy
(publiczna metoda) [edit]
(C++11)
konstruuje element "w miejscu"
(publiczna metoda) [edit]
usuwa elementy
(publiczna metoda) [edit]
dodaje element na koniec
(publiczna metoda) [edit]
konstruuje element "w miejscu" na końcu
(publiczna metoda) [edit]
usuwa ostatni element
(publiczna metoda) [edit]
wstawia element na początek
(publiczna metoda) [edit]
konstruuje element "w miejscu" na początku
(publiczna metoda) [edit]
usuwa pierwszy element
(publiczna metoda) [edit]
zmienia liczbę przechowywanych elementów
(publiczna metoda) [edit]
zamienia zawartość
(publiczna metoda) [edit]
Operacje
scala dwie posortowane listy
(publiczna metoda) [edit]
przenosi elementy z innego kontenera list
(publiczna metoda) [edit]
usuwa elementy spełniające wskazane kryteria
(publiczna metoda) [edit]
odwraca kolejność elementów
(publiczna metoda) [edit]
usuwa następujące po sobie duplikaty
(publiczna metoda) [edit]
sortuje elementy
(publiczna metoda) [edit]

[edytuj] Funkcje operujące na zawartości

leksykograficznie porównuje wartości w list
(szablon funkcji) [edit]
specjalizacja dla algorytmu std::swap
(szablon funkcji) [edit]


[edytuj] Przykład

#include <algorithm>
#include <iostream>
#include <list>
 
int main()
{
    // Tworzy listę zawierającą liczby całkowite
    std::list<int> l = { 7, 5, 16, 8 };
 
    // Dodaje element na początku listy
    l.push_front(25);
    // Dodaje element na końcu listy
    l.push_back(13);
 
    // Wstawia element przed 16-ką, poprzez wyszukanie jej
    auto it = std::find(l.begin(), l.end(), 16);
    if (it != l.end()) {
        l.insert(it, 42);
    }
 
    // Iteruje po wartościach w liście i wypisuje je
    for (int n : l) {
        std::cout << n << '\n';
    }
}

Wynik:

25
7
5
42
16
8
13