Suche…


Einführung

std::forward_list ist ein Container, der das schnelle Einfügen und Entfernen von Elementen von überall im Container unterstützt. Schneller Direktzugriff wird nicht unterstützt. Es ist als einfach verknüpfte Liste implementiert und hat im Wesentlichen keinen Overhead im Vergleich zu seiner Implementierung in C. Im Vergleich zu std::list bietet dieser Container mehr Speicherplatz, wenn keine bidirektionale Iteration erforderlich ist.

Bemerkungen

Durch das Hinzufügen, Entfernen und Verschieben der Elemente in der Liste oder über mehrere Listen hinweg werden die Iteratoren, die derzeit auf andere Elemente in der Liste verweisen, nicht ungültig. Ein Iterator oder eine Referenz, die sich auf ein Element bezieht, wird jedoch ungültig, wenn das entsprechende Element (über erase_after) aus der Liste entfernt wird. std :: forward_list erfüllt die Anforderungen von Container (mit Ausnahme der Größenelementfunktion und der Komplexität des Operators == ist immer linear), AllocatorAwareContainer und SequenceContainer.

Beispiel

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

Ausgabe:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

Methoden

Methodenname Definition
operator= weist dem Container Werte zu
assign weist dem Container Werte zu
get_allocator gibt den zugeordneten Allokator zurück
------ ------
Elementzugriff
front greife auf das erste Element zu
------ ------
Iteratoren
before_begi n Gibt einen Iterator an das Element zurück, bevor er beginnt
cbefore_begin gibt einen konstanten Iterator an das Element zurück, bevor er beginnt
begin bringt einen Iterator an den Anfang zurück
cbegin bringt einen const-Iterator an den Anfang zurück
end bringt einen Iterator zum Ende zurück
cend bringt einen Iterator zum Ende zurück
Kapazität
empty prüft, ob der Container leer ist
max_size gibt die maximal mögliche Anzahl von Elementen zurück
Modifikatoren
clear löscht den Inhalt
insert_after fügt Elemente nach einem Element ein
emplace_after Konstruiert Elemente direkt nach einem Element
erase_after löscht ein Element nach einem Element
push_front fügt ein Element an den Anfang ein
emplace_front Konstruiert ein Element am Anfang
pop_front Entfernt das erste Element
resize ändert die Anzahl der gespeicherten Elemente
swap tauscht den Inhalt aus
Operationen
merge führt zwei sortierte Listen zusammen
splice_after verschiebt Elemente aus einer anderen forward_list
remove entfernt Elemente, die bestimmte Kriterien erfüllen
remove_if entfernt Elemente, die bestimmte Kriterien erfüllen
reverse kehrt die Reihenfolge der Elemente um
unique entfernt aufeinanderfolgende doppelte Elemente
sort sortiert die Elemente


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow