Namensräume
Varianten
Aktionen

std::forward_list

Von cppreference.com
< cpp‎ | container
 
 
 
 
Definiert in 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 zufälliger Zugriff wird nicht unterstützt. Er ist als einfach verkettete Liste implementiert. Verglichen mit std::list bietet dieser Container speichereffizienteren Speicher, 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. Ein Iterator oder eine Referenz, die auf ein Element verweist, wird jedoch ungültig, wenn das entsprechende Element aus der Liste entfernt wird (mittels erase_after).

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

Alle Member-Funktionen 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 zugewiesene Speicher im selben konstanten Ausdruck freigegeben werden muss.

(seit C++26)

Inhalt

[edit] Template-Parameter

T - Der Typ der Elemente.
Die auf die Elemente angewendeten Anforderungen hängen von den tatsächlichen Operationen ab, die auf dem Container ausgeführt werden. Im Allgemeinen muss der Elementtyp ein vollständiger Typ sein und die Anforderungen von Erasable erfüllen, aber viele Memberfunktionen stellen strengere Anforderungen. (bis C++17)

Die auf die Elemente angewendeten Anforderungen hängen von den tatsächlichen Operationen ab, die auf dem Container ausgeführt werden. Im Allgemeinen muss der Elementtyp die Anforderungen von Erasable erfüllen, aber viele Memberfunktionen stellen strengere Anforderungen. Dieser Container (aber nicht seine Member) kann mit einem unvollständigen Elementtyp instanziiert werden, wenn der Allokator die Komplettheitsanforderungen des Allokators 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)

[Bearbeiten]

Allocator - Ein Allokator, der zum Erwerb/Freigeben von Speicher und zum Erstellen/Zerstören 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 ill-formed(seit C++20), wenn Allocator::value_type nicht mit T übereinstimmt.[edit]

[edit] Mitgliedstypen

Mitgliedertyp Definition
value_type T[edit]
allocator_type Allocator[edit]
size_type Vorzeichenloser Ganzzahltyp (normalerweise std::size_t)[edit]
difference_type Vorzeichenbehafteter Ganzzahltyp (normalerweise std::ptrdiff_t)[edit]
Referenz value_type&[edit]
const_reference const value_type&[edit]
Zeiger std::allocator_traits<Allocator>::pointer[edit]
const_pointer std::allocator_traits<Allocator>::const_pointer[edit]
iterator LegacyForwardIterator und ConstexprIterator(seit C++26) zu value_type[edit]
const_iterator LegacyForwardIterator und ConstexprIterator(seit C++26) zu const value_type[edit]

[edit] Member-Funktionen

konstruiert die forward_list
(public member function) [edit]
zerstört die forward_list
(public member function) [edit]
weist dem Container Werte zu
(public member function) [edit]
weist dem Container Werte zu
(public member function) [edit]
weist dem Container einen Bereich von Werten zu
(public member function) [edit]
gibt den zugehörigen Allocator zurück
(public member function) [edit]
Elementzugriff
Greift auf das erste Element zu
(public member function) [edit]
Iteratoren
gibt einen Iterator vor dem Anfang zurück
(public member function) [edit]
gibt einen Iterator zum Anfang zurück
(public member function) [edit]
gibt einen Iterator zum Ende zurück
(public member function) [edit]
Kapazität
prüft, ob der Container leer ist
(public member function) [edit]
Gibt die maximal mögliche Anzahl von Elementen zurück
(public member function) [edit]
Modifizierer
leert den Inhalt
(public member function) [edit]
fügt Elemente nach einem Element ein
(public member function) [edit]
konstruiert Elemente in-place nach einem Element
(public member function) [edit]
fügt einen Bereich von Elementen nach einem Element ein
(public member function) [edit]
entfernt ein Element nach einem Element
(public member function) [edit]
fügt ein Element am Anfang ein
(public member function) [edit]
konstruiert ein Element im-place am Anfang
(public member function) [edit]
fügt einen Elementbereich am Anfang hinzu
(public member function) [edit]
entfernt das erste Element
(public member function) [edit]
ändert die Anzahl der gespeicherten Elemente
(public member function) [edit]
tauscht die Inhalte
(public member function) [edit]
Operationen
fügt zwei sortierte Listen zusammen
(public member function) [edit]
verschiebt Elemente aus einer anderen forward_list
(public member function) [edit]
entfernt Elemente, die bestimmte Kriterien erfüllen
(public member function) [edit]
kehrt die Reihenfolge der Elemente um
(public member function) [edit]
entfernt aufeinanderfolgende doppelte Elemente
(public member function) [edit]
sortiert die Elemente
(public member function) [edit]

[edit] 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 lexikographisch die Werte von zwei forward_lists
(function template) [edit]
spezialisiert den Algorithmus std::swap
(function template) [edit]
entfernt alle Elemente, die bestimmte Kriterien erfüllen
(function template) [edit]

Deduction Guides

(seit C++17)

[edit] Anmerkungen

Feature-Test-Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Bereichskonstruktion und -einfügung für Container
__cpp_lib_constexpr_containers 202502L (C++26) constexpr std::forward_list

[edit] Beispiel

[edit] Siehe auch

Doppelt verkettete Liste
(Klassenvorlage) [edit]