std::list
Z cppreference.com
Ta strona została ukończona i wymaga przejrzenia. Jeśli przejrzysz tę stronę i nie znajdziesz błędów, zwiększ argument tego szablonu o 1.
Znalezione błędy możesz poprawić samemu lub zgłosić na tej stronie. Obecnie przejrzała: 1 osoba ✭✰✰ |
Zdefiniowane w nagłówku <list>
|
||
template< class T, |
(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.
| ||||
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. |
[edytuj] Typy składowe
Typ składowy | Definicja | ||||
value_type | T | ||||
allocator_type | Allocator | ||||
size_type | Typ całkowitoliczbowy bez znaku (zwykle std::size_t) | ||||
difference_type | Typ całkowitoliczbowy ze znakiem (zwykle std::ptrdiff_t) | ||||
reference |
| ||||
const_reference |
| ||||
pointer |
| ||||
const_pointer |
| ||||
iterator | LegacyBidirectionalIterator | ||||
const_iterator | Constant BidirectionalIterator | ||||
reverse_iterator
|
std::reverse_iterator<iterator> | ||||
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[edytuj] Metody
Konstruuje list (publiczna metoda) | |
Niszczy list (publiczna metoda) | |
przypisuje wartości do kontenera (publiczna metoda) | |
przypisuje wartości do kontenera (publiczna metoda) | |
zwraca skojarzony alokator (publiczna metoda) | |
Dostęp do elementów | |
dostęp do pierwszego elementu (publiczna metoda) | |
dostęp do ostatniego elementu (publiczna metoda) | |
Iteratory | |
zwraca iterator na początek kontenera (publiczna metoda) | |
zwraca iterator za koniec kontenera (publiczna metoda) | |
zwraca odwrócony iterator na początek (publiczna metoda) | |
zwraca odwrócony iterator za koniec kontenera (publiczna metoda) | |
Pojemność | |
sprawdza, czy kontener jest pusty (publiczna metoda) | |
zwraca liczbę elementów (publiczna metoda) | |
zwraca maksymalną możliwą liczbę elementów (publiczna metoda) | |
Modyfikatory | |
czyści zawartość (publiczna metoda) | |
wstawia elementy (publiczna metoda) | |
(C++11) |
konstruuje element "w miejscu" (publiczna metoda) |
usuwa elementy (publiczna metoda) | |
dodaje element na koniec (publiczna metoda) | |
(C++11) |
konstruuje element "w miejscu" na końcu (publiczna metoda) |
usuwa ostatni element (publiczna metoda) | |
wstawia element na początek (publiczna metoda) | |
(C++11) |
konstruuje element "w miejscu" na początku (publiczna metoda) |
usuwa pierwszy element (publiczna metoda) | |
zmienia liczbę przechowywanych elementów (publiczna metoda) | |
zamienia zawartość (publiczna metoda) | |
Operacje | |
scala dwie posortowane listy (publiczna metoda) | |
przenosi elementy z innego kontenera list (publiczna metoda) | |
usuwa elementy spełniające wskazane kryteria (publiczna metoda) | |
odwraca kolejność elementów (publiczna metoda) | |
usuwa następujące po sobie duplikaty (publiczna metoda) | |
sortuje elementy (publiczna metoda) |
[edytuj] Funkcje operujące na zawartości
leksykograficznie porównuje wartości w list (szablon funkcji) | |
specjalizacja dla algorytmu std::swap (szablon funkcji) |
[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