std:: list
|
Definiert im Header
<list>
|
||
|
template
<
class
T,
|
(1) | |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (seit C++17) |
std::list
ist ein Container, der Einfügen und Entfernen von Elementen an beliebiger Stelle im Container in konstanter Zeit unterstützt. Schneller wahlfreier Zugriff wird nicht unterstützt. Es ist üblicherweise als doppelt verkettete Liste implementiert. Im Vergleich zu
std::forward_list
bietet dieser Container bidirektionale Iterationsfähigkeit, ist jedoch weniger speichereffizient.
Das Hinzufügen, Entfernen und Verschieben von Elementen innerhalb der Liste oder über mehrere Listen hinweg macht Iteratoren oder Referenzen nicht ungültig. Ein Iterator wird nur ungültig, wenn das entsprechende Element gelöscht wird.
std::list
erfüllt die Anforderungen von
Container
,
AllocatorAwareContainer
,
SequenceContainer
und
ReversibleContainer
.
Alle Memberfunktionen von
std::list
sind
constexpr
: Es ist möglich,
std::list
-Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.
Allerdings können
|
(seit C++26) |
Inhaltsverzeichnis |
Template-Parameter
| T | - |
Der Typ der Elemente.
|
||||||||||||||
| Allocator | - |
Ein Allokator, der zur Beschaffung/Freigabe von Speicher und zur Konstruktion/Destruktion der Elemente in diesem Speicher verwendet wird. Der Typ muss die Anforderungen von
Allocator
erfüllen.
Das Verhalten ist undefiniert
(bis C++20)
Das Programm ist fehlerhaft
(seit C++20)
, falls
Allocator::value_type
nicht identisch mit
T
ist.
|
Mitgliedertypen
| Mitgliedstyp | Definition | ||||
value_type
|
T
|
||||
allocator_type
|
Allocator
|
||||
size_type
|
Vorzeichenloser Ganzzahltyp (üblicherweise std::size_t ) | ||||
difference_type
|
Vorzeichenbehafteter Ganzzahltyp (üblicherweise std::ptrdiff_t ) | ||||
reference
|
value_type & | ||||
const_reference
|
const value_type & | ||||
pointer
|
|
||||
const_pointer
|
|
||||
iterator
|
LegacyBidirectionalIterator
und
ConstexprIterator
(seit C++26)
zu
value_type
|
||||
const_iterator
|
LegacyBidirectionalIterator und ConstexprIterator (seit C++26) zu const value_type | ||||
reverse_iterator
|
std:: reverse_iterator < iterator > | ||||
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > |
Memberfunktionen
konstruiert die
list
(öffentliche Elementfunktion) |
|
zerstört die
list
(öffentliche Elementfunktion) |
|
|
weist dem Container Werte zu
(öffentliche Elementfunktion) |
|
|
weist Werte dem Container zu
(öffentliche Elementfunktion) |
|
|
(C++23)
|
weist dem Container einen Wertebereich zu
(öffentliche Elementfunktion) |
|
gibt den zugeordneten Allokator zurück
(öffentliche Elementfunktion) |
|
Elementzugriff |
|
|
Zugriff auf das erste Element
(öffentliche Elementfunktion) |
|
|
Zugriff auf das letzte Element
(öffentliche Elementfunktion) |
|
Iteratoren |
|
|
(C++11)
|
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion) |
|
(C++11)
|
gibt einen Iterator zum Ende zurück
(öffentliche Member-Funktion) |
|
(C++11)
|
gibt einen Reverse-Iterator zum Anfang zurück
(public member function) |
|
(C++11)
|
gibt einen umgekehrten Iterator zum Ende zurück
(öffentliche Elementfunktion) |
Kapazität |
|
|
prüft, ob der Container leer ist
(öffentliche Elementfunktion) |
|
|
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion) |
|
|
gibt die maximal mögliche Anzahl von Elementen zurück
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
löscht den Inhalt
(öffentliche Elementfunktion) |
|
|
fügt Elemente ein
(öffentliche Elementfunktion) |
|
|
(C++23)
|
fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion) |
|
(C++11)
|
Konstruiert Element direkt vor Ort
(öffentliche Elementfunktion) |
|
löscht Elemente
(öffentliche Elementfunktion) |
|
|
fügt ein Element am Ende hinzu
(öffentliche Elementfunktion) |
|
|
(C++11)
|
Konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion) |
|
(C++23)
|
fügt eine Reihe von Elementen am Ende hinzu
(öffentliche Elementfunktion) |
|
entfernt das letzte Element
(öffentliche Elementfunktion) |
|
|
fügt ein Element am Anfang ein
(öffentliche Elementfunktion) |
|
|
(C++11)
|
Konstruiert ein Element direkt am Anfang
(öffentliche Elementfunktion) |
|
(C++23)
|
fügt einen Bereich von Elementen am Anfang hinzu
(öffentliche Elementfunktion) |
|
entfernt das erste Element
(öffentliche Elementfunktion) |
|
|
ändert die Anzahl der gespeicherten Elemente
(public member function) |
|
|
tauscht die Inhalte aus
(öffentliche Elementfunktion) |
|
Operationen |
|
|
vereinigt zwei sortierte Listen
(öffentliche Elementfunktion) |
|
überträgt Elemente aus einer anderen
list
(öffentliche Elementfunktion) |
|
|
entfernt Elemente, die bestimmte Kriterien erfüllen
(öffentliche Elementfunktion) |
|
|
kehrt die Reihenfolge der Elemente um
(öffentliche Elementfunktion) |
|
|
entfernt aufeinanderfolgende doppelte Elemente
(öffentliche Elementfunktion) |
|
|
sortiert die Elemente
(öffentliche Elementfunktion) |
|
Nicht-Member-Funktionen
|
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(C++20)
|
vergleicht lexikographisch die Werte zweier
list
s
(Funktions-Template) |
|
spezialisiert den
std::swap
Algorithmus
(Funktions-Template) |
|
|
löscht alle Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template) |
Deduktionsleitfäden |
(seit C++17) |
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-Konstruktion und -Einfügung für Container |
__cpp_lib_constexpr_list
|
202502L
|
(C++26) |
constexpr
std::list
|
Beispiel
#include <algorithm> #include <iostream> #include <list> int main() { // Erstelle eine Liste mit Ganzzahlen std::list<int> l = {7, 5, 16, 8}; // Füge eine Ganzzahl am Anfang der Liste hinzu l.push_front(25); // Füge eine Ganzzahl am Ende der Liste hinzu l.push_back(13); // Füge eine Ganzzahl vor 16 durch Suche ein auto it = std::find(l.begin(), l.end(), 16); if (it != l.end()) l.insert(it, 42); // Gib die Liste aus std::cout << "l = { "; for (int n : l) std::cout << n << ", "; std::cout << "};\n"; }
Ausgabe:
l = { 25, 7, 5, 42, 16, 8, 13, };
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 230 | C++98 |
T
war nicht erforderlich
CopyConstructible
zu sein
(ein Element vom Typ
T
könnte möglicherweise nicht konstruiert werden)
|
T
muss ebenfalls
CopyConstructible sein |
| LWG 276 | C++98 |
T
war immer erforderlich
CopyAssignable
zu sein
|
nur erforderlich falls
operator=
oder
assign mit
T
instanziiert wird
|
Siehe auch
|
(C++11)
|
einfach verkettete Liste
(Klassentemplate) |