C++-Container<forward_list>

In der C++-Standardbibliothek<forward_list>Ist ein Container, der eine Datenstruktur in Form einer einfach verketteten Liste bereitstellt.

mit doppelt verketteter Liste (std::list) anders,std::forward_listUnterstützt nur die Vorwärtsdurchquerung. Es eignet sich für Szenarien, die häufige Vorwärtsdurchquerung und Einfüge-/Löschvorgänge erfordern. Das Folgende ist einestd::forward_listdetaillierte Beschreibung:

Einfach verkettete Liste:

  • std::forward_listIst eine einfach verkettete Liste, kann nur von vorne nach hinten durchlaufen werden, nicht in umgekehrter Richtung.
  • Aufgrund ihrer einfach verketteten Listenstruktur sind Einfüge- und Löschvorgänge sehr effizient, wenn die Position bekannt ist (O(1)-Komplexität).

Geringer Speicher-Overhead:

  • undstd::listIm Vergleich dazu,std::forward_listBenötigt nur einen Zeiger auf den nächsten Knoten, wodurch Speicher gespart wird.

unterstützt keinen wahlfreien Zugriff:

  • Unterstützt keinen Zugriff auf Elemente über den Index, kann dieoperator[]oderatMethode nicht verwenden, kann nur über Iteratoren zugegriffen werden.

Syntax

std::forward_listIst eine Template-Klasse in der C++-Standardbibliothek, definiert in<forward_list>Header-Datei. Sie verwendet Template-ParameterTum den Typ der in der Liste gespeicherten Elemente anzugeben.

Die folgenden sindstd::forward_listGrundlegende Syntax:

#include <forward_list>

std::forward_list<T> list;

Konstruktor

std::forward_listBietet mehrere Konstruktoren, darunter:

  • Standardkonstruktor: erzeugt eine leereforward_list。
  • Konstruktor mit Anfangswerten: erzeugt einen [container], der die angegebenen Anfangswerte enthält.forward_list。
  • Range-Konstruktor: erstellt einen [Container], der die Elemente im angegebenen Bereich enthält.forward_list。

häufig verwendete Member-Funktionen

  • void push_front(const T& value): Fügt ein Element am Anfang der Liste ein.
  • void pop_front(): Entfernt das Element am Anfang der Liste.
  • iterator before_begin()Gibt einen Iterator zurück, der vor den Anfang der Liste zeigt.
  • iterator begin(): Gibt einen Iterator zurück, der auf den Anfang der Liste zeigt.
  • iterator end(): Gibt einen Iterator zurück, der auf das Ende der Liste zeigt.

Beispiel

Nachfolgend ist ein Beispiel unter Verwendung vonstd::forward_listEin einfaches Beispiel, das das Erstellen einer Liste, das Hinzufügen von Elementen, das Durchlaufen der Liste und die Ausgabe der Ergebnisse umfasst.

Beispiel

#include <iostream>
#include <forward_list>

int main() {
    // eine leere forward_list erstellen
    std::forward_list<int> fl;

    // Elemente am Anfang der Liste hinzufügen
    fl.push_front(10);
    fl.push_front(20);
    fl.push_front(30);

    // durch die forward_list iterieren und Elemente ausgeben
    for (auto it = fl.begin(); it != fl.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    // Ergebnis ausgeben: 30 20 10

    return 0;
}

Wenn Sie den obigen Code ausführen, sehen Sie die folgende Ausgabe:

30 20 10

std::forward_listist ein sehr nützlicher Container in der C++-Standardbibliothek, besonders geeignet für Szenarien, die häufige Einfügungen und Löschungen am Anfang der Liste erfordern. Obwohl kein wahlfreier Zugriff unterstützt wird, können seine Leistungsvorteile in bestimmten Fällen diesen Nachteil ausgleichen. Ich hoffe, dieser Artikel hilft Anfängern, ihn besser zu verstehen und zu nutzen.std::forward_list。

Weitere Erweiterungen