Namespaces
Variants

std:: forward_list

From cppreference.net
Definiert im Header <forward_list>
template <

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

> class forward_list ;
(1) (seit C++11)
namespace pmr {

template < class T >
using forward_list = std :: forward_list < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (seit C++17)

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.

std::forward_list erfüllt die Anforderungen von Container (mit Ausnahme der size -Memberfunktion und dass die Komplexität von operator== immer linear ist), AllocatorAwareContainer und SequenceContainer .

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.

(since C++26)

Inhaltsverzeichnis

Template-Parameter

T - Der Typ der Elemente.
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.

Feature-Test Makro Wert Std Feature
__cpp_lib_incomplete_container_elements 201505L (C++17) Minimale Unterstützung für unvollständige Typen
(seit C++17)

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) wenn Allocator::value_type nicht identisch mit T ist.

Mitgliedertypen

Mitgliedtyp 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 std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator LegacyForwardIterator und ConstexprIterator (seit C++26) für value_type
const_iterator LegacyForwardIterator und ConstexprIterator (seit C++26) für const value_type

Memberfunktionen

konstruiert die forward_list
(öffentliche Elementfunktion)
zerstört die forward_list
(öffentliche Member-Funktion)
weist dem Container Werte zu
(öffentliche Elementfunktion)
weist dem Container Werte zu
(öffentliche Elementfunktion)
weist dem Container einen Wertebereich zu
(öffentliche Elementfunktion)
gibt den zugeordneten Allokator zurück
(öffentliche Elementfunktion)
Elementzugriff
Zugriff auf das erste Element
(öffentliche Elementfunktion)
Iteratoren
gibt einen Iterator auf das Element vor dem Anfang zurück
(öffentliche Elementfunktion)
gibt einen Iterator zum Anfang zurück
(public member function)
gibt einen Iterator zum Ende zurück
(öffentliche Elementfunktion)
Kapazität
prüft, ob der Container leer ist
(öffentliche Elementfunktion)
gibt die maximal mögliche Anzahl von Elementen zurück
(öffentliche Elementfunktion)
Modifikatoren
löscht den Inhalt
(öffentliche Elementfunktion)
fügt Elemente nach einem Element ein
(öffentliche Elementfunktion)
Konstruiert Elemente direkt nach einem Element
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen nach einem Element ein
(öffentliche Elementfunktion)
löscht ein Element nach einem Element
(öffentliche Elementfunktion)
fügt ein Element am Anfang ein
(öffentliche Elementfunktion)
Konstruiert ein Element direkt am Anfang
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen am Anfang hinzu
(öffentliche Elementfunktion)
entfernt das erste Element
(öffentliche Elementfunktion)
ändert die Anzahl der gespeicherten Elemente
(öffentliche Elementfunktion)
tauscht die Inhalte aus
(öffentliche Elementfunktion)
Operationen
vereinigt zwei sortierte Listen
(öffentliche Elementfunktion)
überträgt Elemente aus einem anderen forward_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

(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)
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 Feature
__cpp_lib_containers_ranges 202202L (C++23) Ranges-Konstruktion und -Einfügung für Container
__cpp_lib_constexpr_forward_list 202502L (C++26) constexpr std::forward_list

Beispiel

Siehe auch

doppelt verkettete Liste
(Klassentemplate)