std::forward_list
ist ein Container, der schnelles Einfügen und Entfernen von Elementen an beliebiger Stelle im Container unterstützt. Schneller wahlfreier Zugriff wird nicht unterstützt. Es ist als einfach verkettete Liste implementiert. Im Vergleich zu
std::list
bietet dieser Container eine platzsparendere Speicherung, wenn bidirektionale Iteration nicht benötigt wird.
Das Hinzufügen, Entfernen und Verschieben von Elementen innerhalb der Liste oder über mehrere Listen hinweg macht Iteratoren, die derzeit auf andere Elemente in der Liste verweisen, nicht ungültig. Allerdings wird ein Iterator oder eine Referenz, die auf ein Element verweist, ungültig, wenn das entsprechende Element (mittels
erase_after
) aus der Liste entfernt wird.
Alle Memberfunktionen von
std::forward_list
sind
constexpr
: Es ist möglich,
std::forward_list
-Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.
Allerdings können
std::forward_list
-Objekte im Allgemeinen nicht
constexpr
sein, da jeder dynamisch allokierte Speicher in derselben Auswertung des konstanten Ausdrucks freigegeben werden muss.
Die Anforderungen an die Elemente hängen von den tatsächlich durchgeführten Operationen auf dem Container ab. Allgemein wird gefordert, dass der Elementtyp ein vollständiger Typ ist und die Anforderungen von
Erasable
erfüllt, jedoch stellen viele Memberfunktionen strengere Anforderungen.
(bis C++17)
Die Anforderungen an die Elemente hängen von den tatsächlich durchgeführten Operationen auf dem Container ab. Allgemein wird gefordert, dass der Elementtyp die Anforderungen von
Erasable
erfüllt, jedoch stellen viele Memberfunktionen strengere Anforderungen. Dieser Container (aber nicht seine Member) kann mit einem unvollständigen Elementtyp instanziiert werden, wenn der Allokator die
Allokator-Vollständigkeitsanforderungen
erfüllt.
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)
wenn
Allocator::value_type
nicht identisch mit
T
ist.
(C++11)
(C++11)
(entfernt in C++20)
(C++11)
(entfernt in C++20)
(C++11)
(entfernt in C++20)
(C++11)
(entfernt in C++20)
(C++11)
(entfernt in C++20)
(C++20)
vergleicht die Werte von zwei
forward_list
s lexikographisch
(Funktions-Template)