C++
std :: forward_list
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 |