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, 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.
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.
|
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>
|
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) | |
Funkcje operujące na zawartości
| leksykograficznie porównuje wartości w list (szablon funkcji) | |
| specjalizacja dla algorytmu std::swap (szablon funkcji) |
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