std::forward_list
| Definiert in Header <forward_list> |
||
| template< class T, |
(1) | (seit C++11) |
| namespace pmr { template< class 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 |
(seit C++26) |
Inhalt |
[edit] Template-Parameter
| T | - | Der Typ der Elemente.
| ||||||||||||
| 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] Mitgliedstypen
| Mitgliedertyp | Definition |
value_type
|
T |
allocator_type
|
Allocator |
size_type
|
Vorzeichenloser Ganzzahltyp (normalerweise std::size_t) |
difference_type
|
Vorzeichenbehafteter Ganzzahltyp (normalerweise std::ptrdiff_t) |
Referenz
|
value_type& |
const_reference
|
const value_type& |
Zeiger
|
std::allocator_traits<Allocator>::pointer |
const_pointer
|
std::allocator_traits<Allocator>::const_pointer |
iterator
|
LegacyForwardIterator und ConstexprIterator(seit C++26) zu value_type |
const_iterator
|
LegacyForwardIterator und ConstexprIterator(seit C++26) zu const value_type |
[edit] Member-Funktionen
konstruiert die forward_list(public member function) | |
zerstört die forward_list(public member function) | |
| weist dem Container Werte zu (public member function) | |
| weist dem Container Werte zu (public member function) | |
| (C++23) |
weist dem Container einen Bereich von Werten zu (public member function) |
| gibt den zugehörigen Allocator zurück (public member function) | |
Elementzugriff | |
| Greift auf das erste Element zu (public member function) | |
Iteratoren | |
| gibt einen Iterator vor dem Anfang zurück (public member function) | |
| gibt einen Iterator zum Anfang zurück (public member function) | |
| gibt einen Iterator zum Ende zurück (public member function) | |
Kapazität | |
| prüft, ob der Container leer ist (public member function) | |
| Gibt die maximal mögliche Anzahl von Elementen zurück (public member function) | |
Modifizierer | |
| leert den Inhalt (public member function) | |
| fügt Elemente nach einem Element ein (public member function) | |
| konstruiert Elemente in-place nach einem Element (public member function) | |
| (C++23) |
fügt einen Bereich von Elementen nach einem Element ein (public member function) |
| entfernt ein Element nach einem Element (public member function) | |
| fügt ein Element am Anfang ein (public member function) | |
| konstruiert ein Element im-place am Anfang (public member function) | |
| (C++23) |
fügt einen Elementbereich am Anfang hinzu (public member function) |
| entfernt das erste Element (public member function) | |
| ändert die Anzahl der gespeicherten Elemente (public member function) | |
| tauscht die Inhalte (public member function) | |
Operationen | |
| fügt zwei sortierte Listen zusammen (public member function) | |
verschiebt Elemente aus einer anderen forward_list(public member function) | |
| entfernt Elemente, die bestimmte Kriterien erfüllen (public member function) | |
| kehrt die Reihenfolge der Elemente um (public member function) | |
| entfernt aufeinanderfolgende doppelte Elemente (public member function) | |
| sortiert die Elemente (public member function) | |
[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) |
| (C++11) |
spezialisiert den Algorithmus std::swap (function template) |
| entfernt alle Elemente, die bestimmte Kriterien erfüllen (function template) |
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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Siehe auch
| Doppelt verkettete Liste (Klassenvorlage) |