logo

Liste in der C++-Standardvorlagenbibliothek (STL)

Listen sind sequenziell Behälter die eine nicht zusammenhängende Speicherzuweisung ermöglichen. Im Vergleich zum Vektor erfolgt die Durchquerung der Liste langsam, aber sobald eine Position gefunden wurde, erfolgt das Einfügen und Löschen schnell (konstante Zeit). Wenn wir von einer Liste sprechen, sprechen wir normalerweise von a doppelt verkettete Liste . Zur Implementierung einer einfach verknüpften Liste verwenden wir a vorwärts_liste .

std::list ist die Klasse des Listencontainers. Es ist Teil der C++ Standard Template Library (STL) und darin definiert Header-Datei.



Syntax:

std::list name_of_list;>

Beispiel:

C++








// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }>

>

kein Eingangssignal
>

Ausgabe

12 45 8 6>

Im obigen Beispiel haben wir ein std::list-Objekt mit dem Namen erstellt gqlist und initialisierte es mit einer initializer_list. Wir können die std::list-Objekte auf viele verschiedene Arten initialisieren Hier.

Einige grundlegende Operationen auf std::list

  • Vorderseite() Gibt den Wert des ersten Elements in der Liste zurück.
  • zurück() Gibt den Wert des letzten Elements in der Liste zurück.
  • push_front() Fügt am Anfang der Liste ein neues Element „g“ hinzu.
  • push_back() Fügt am Ende der Liste ein neues Element „g“ hinzu.
  • pop_front() Entfernt das erste Element der Liste und reduziert die Größe der Liste um 1.
  • Pop zurück() Entfernt das letzte Element der Liste und reduziert die Größe der Liste um 1.
  • einfügen() Fügt neue Elemente in die Liste vor dem Element an einer angegebenen Position ein.
  • Größe() Gibt die Anzahl der Elemente in der Liste zurück.
  • beginnen() Die Funktion begin() gibt einen Iterator zurück, der auf das erste Element der Liste zeigt.
  • Ende() Die Funktion end() gibt einen Iterator zurück, der auf das theoretische letzte Element zeigt, das auf das letzte Element folgt.

Das folgende Beispiel demonstriert die allgemeine Verwendung von Listencontainern und ihre Grundfunktionen in C++.

Beispiel:

C++




// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::iterator it;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>' '>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>' List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>' List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>' gqlist1.front() : '> << gqlist1.front();> >cout <<>' gqlist1.back() : '> << gqlist1.back();> >cout <<>' gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>' gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>' gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>' gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }>

>

>

Ausgabe

List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>

Das obige Beispiel veranschaulicht nur die allgemeine Verwendung von std::list und seinen Mitgliedsfunktionen. Die folgende Tabelle enthält alle Mitgliedsfunktionen der Klasse std::list und Links zu deren ausführlicher Erklärung.

std::list Memberfunktionen

Funktionen

Definition

Vorderseite() Gibt den Wert des ersten Elements in der Liste zurück.
zurück() Gibt den Wert des letzten Elements in der Liste zurück.
push_front(g) Fügt am Anfang der Liste ein neues Element „g“ hinzu.
push_back(g) Fügt am Ende der Liste ein neues Element „g“ hinzu.
pop_front() Entfernt das erste Element der Liste und reduziert die Größe der Liste um 1.
Pop zurück() Entfernt das letzte Element der Liste und reduziert die Größe der Liste um 1.
list::begin() Die Funktion begin() gibt einen Iterator zurück, der auf das erste Element der Liste zeigt.
list::end() Die Funktion end() gibt einen Iterator zurück, der auf das theoretisch letzte Element zeigt, das auf das letzte Element folgt.
Listen Sie rbegin() und rend() auf rbegin() gibt einen umgekehrten Iterator zurück, der auf das letzte Element der Liste zeigt. rend() gibt einen umgekehrten Iterator zurück, der auf die Position vor dem Anfang der Liste zeigt.
cbegin() und cend() auflisten cbegin() gibt einen konstanten Direktzugriffsiterator zurück, der auf den Anfang der Liste zeigt. cend() gibt einen konstanten Direktzugriffsiterator zurück, der auf das Ende der Liste zeigt.
crbegin() und crend() auflisten crbegin() gibt einen konstanten Reverse-Iterator zurück, der auf das letzte Element der Liste zeigt, d. h. den umgekehrten Anfang des Containers. crend() gibt einen konstanten Reverse-Iterator zurück, der auf das theoretische Element vor dem ersten Element in der Liste zeigt, d. h. auf das umgekehrte Ende der Liste.
leer() Gibt zurück, ob die Liste leer ist (1) oder nicht (0).
einfügen() Fügt neue Elemente in die Liste vor dem Element an einer angegebenen Position ein.
löschen() Entfernt ein einzelnes Element oder eine Reihe von Elementen aus der Liste.
zuordnen() Weist der Liste neue Elemente zu, indem aktuelle Elemente ersetzt und die Größe der Liste geändert werden.
entfernen() Entfernt alle Elemente aus der Liste, die einem bestimmten Element entsprechen.
list::remove_if() Wird verwendet, um alle Werte aus der Liste zu entfernen, die dem als Parameter der Funktion angegebenen Prädikat oder der Bedingung entsprechen.
umkehren() Kehrt die Liste um.
Größe() Gibt die Anzahl der Elemente in der Liste zurück.
Listengröße ändern() Wird verwendet, um die Größe eines Listencontainers zu ändern.
Sortieren() Sortiert die Liste in aufsteigender Reihenfolge.
Liste max_size() Gibt die maximale Anzahl von Elementen zurück, die ein Listencontainer enthalten kann.
Liste einzigartig() Entfernt alle doppelten aufeinanderfolgenden Elemente aus der Liste.
list::emplace_front() und list::emplace_back() Die Funktion .emplace_front() wird verwendet, um ein neues Element in den Listencontainer einzufügen und das Objekt direkt am Anfang der Liste zu erstellen.
. Mit der Funktion emplace_back() wird ein neues Element in den Listencontainer eingefügt und das Objekt direkt am Ende der Liste erstellt.
list::clear() Die Funktion „clear()“ wird verwendet, um alle Elemente des Listencontainers zu entfernen und ihn so auf die Größe 0 zu bringen.
list::operator= Dieser Operator wird verwendet, um dem Container neue Inhalte zuzuweisen, indem die vorhandenen Inhalte ersetzt werden.
list::swap() Diese Funktion wird verwendet, um den Inhalt einer Liste mit einer anderen Liste auszutauschen.
splice() auflisten Wird verwendet, um Elemente von einer Liste in eine andere zu übertragen.
Liste merge() Führt zwei sortierte Listen zu einer zusammen.
Liste emplace() Erweitert die Liste durch Einfügen eines neuen Elements an einer bestimmten Position und erstellt das Objekt direkt am Anfang der Liste, wodurch möglicherweise die Leistung verbessert wird, indem ein Kopiervorgang vermieden wird

Was Sie beim Listencontainer beachten sollten

  • Die Implementierung erfolgt im Allgemeinen mithilfe einer dynamischen doppelt verknüpften Liste mit Durchlauf in beide Richtungen.
  • Schnellere Einfüge- und Löschvorgänge im Vergleich zu Arrays und Vektoren.
  • Es bietet nur sequentiellen Zugriff. Ein wahlfreier Zugriff auf ein beliebiges mittleres Element ist nicht möglich
  • Es ist als Vorlage definiert und kann daher jeden Datentyp enthalten.
  • Es funktioniert wie eine unsortierte Liste, was bedeutet, dass die Reihenfolge der Liste standardmäßig nicht beibehalten wird. Es gibt jedoch Techniken zum Sortieren.