Die Standard Template Library (STL) besteht aus einer Reihe von C ++ - Vorlagenklassen, die allgemeine Programmierdatenstrukturen und -funktionen wie Listen, Stapel, Arrays usw. bereitstellen. In diesem Artikel zu STL in C ++ werden die folgenden Hinweise erläutert:
Fahren Sie mit diesem Artikel über STL in C ++ fort
C ++ - Vorlagen
C ++ bietet uns eine Funktion von Vorlagen, mit der Funktionen und Klassen mit generischen Typen arbeiten können. Dies ermöglicht die Wiederverwendbarkeit einer Funktion oder Klasse und ermöglicht es, mit vielen verschiedenen Datentypen zu arbeiten, ohne für jeden neu geschrieben zu werden.
Fahren Sie mit diesem Artikel über STL in C ++ fort
Generische Funktionen und STL
Während der mehrmaligen Programmierung müssen Funktionen erstellt werden, die dieselben Vorgänge ausführen, jedoch mit unterschiedlichen Datentypen arbeiten. Um dieses Problem zu lösen, bietet C ++ eine Funktion zum Erstellen einer einzelnen generischen Funktion anstelle vieler Funktionen, die mithilfe des Vorlagenparameters mit unterschiedlichen Datentypen arbeiten können. Die Sammlung dieser genrischen Klassen und Funktionen wird als Standard Template Library (STL) bezeichnet.
Die Komponenten von STL, die jetzt Teil der Standard-C ++ - Bibliothek sind, werden im Namespace std definiert. Wir müssen daher die using-Namespace-Direktive verwenden, um sie in unser Programm zu importieren.
Syntax:
Verwenden des Namespace std
STL besteht aus drei Komponenten
Behälter
Algorithmen
Iteratoren
Diese drei Komponenten arbeiten synergetisch zusammen, um eine Vielzahl von Programmierlösungen zu unterstützen. Der Algorithmus verwendet Iteratoren, um in Containern gespeicherte Operationen auszuführen.
Ein Container ist ein Objekt, das Daten im Speicher auf organisierte Weise speichert. Die Container in STL werden von Vorlagenklassen implementiert und können daher leicht geändert und angepasst werden, um verschiedene Datentypen aufzunehmen.
Eine Prozedur, mit der die in den Containern enthaltenen Daten verarbeitet werden, wird als Algorithmus definiert. Die STL enthält viele verschiedene Arten von Algorithmen zur Unterstützung von Aufgaben wie Initialisieren, Suchen, Kopieren, Sortieren und Zusammenführen, Kopieren, Sortieren und Zusammenführen. Algorithmen werden durch Vorlagenfunktionen implementiert.
Ein Iterator kann als ein Objekt definiert werden, das auf ein Element in einem Container verweist. Iteratoren können verwendet werden, um sich durch den Inhalt von Behältern zu bewegen. Iteratoren werden wie Zeiger behandelt. Wir können sie erhöhen oder verringern. Iteratoren verbinden Algorithmen mit Containern und spielen eine Schlüsselrolle bei der Manipulation von in den Containern gespeicherten Daten.
Fahren Sie mit diesem Artikel über STL in C ++ fort
Behälter
STL definiert zehn Container, die in drei Kategorien eingeteilt sind.
Behälter | Beschreibung | Header-Datei | Iterator |
Vektor | Es kann als dynamisches Array definiert werden. Es ermöglicht den direkten Zugriff auf jedes Element. | Direktzugriff | |
Liste | Es ist eine bidirektionale lineare Liste. Es ermöglicht das Einfügen und Löschen überall | Bidirektional | |
und | Es ist eine Warteschlange mit zwei Enden. Ermöglicht das Einfügen und Löschen an beiden Enden. Ermöglicht den direkten Zugriff auf jedes Element. | Direktzugriff | |
einstellen | Es ist ein zugehöriger Container zum Speichern eindeutiger Sets. Ermöglicht eine schnelle Suche. | Bidirektional | |
Multiset | Es ist ein zugehöriger Container zum Speichern nicht eindeutiger Sätze. | Bidirektional | |
Karte | Es ist ein zugehöriger Container zum Speichern eindeutiger Schlüssel / Wert-Paare. Jeder Schlüssel ist nur einem Wert zugeordnet. | Bidirektional | |
Multimap | Es ist ein zugeordneter Container zum Speichern von Schlüssel / Wert, in dem ein Schlüssel mehr als einem Wert zugeordnet sein kann (Eins-zu-Viele-Zuordnung). Es ermöglicht eine schlüsselbasierte Suche. | Bidirektional | |
Stapel | Ein Standardstapel folgt Last-In-First-Out (LIFO) Was bedeutet Namespace in C ++? | Kein Iterator | |
Warteschlange | Eine Standardwarteschlange folgt dem FIFO (First-In-First-Out). | Kein Iterator | |
Prioritätswarteschlange | Das erste Element ist immer das Element mit der höchsten Priorität | Kein Iterator |
Sequenzcontainer
Sequenzcontainer speichern Elemente in einer linearen Reihenfolge. Alle Elemente sind durch ihre Position entlang der Linie miteinander verbunden. Sie ermöglichen das Einfügen von Elementen und alle unterstützen mehrere Operationen an ihnen.
Die STL bietet drei Arten von Sequenzelementen:
- Vektor
- Liste
- und
Assoziative Container:
Sie sind so konzipiert, dass sie den direkten Zugriff auf Elemente mithilfe von Schlüsseln unterstützen. Sie sind nicht sequentiell. Es gibt vier Arten von
assoziative Container:
- einstellen
- Multiset
- Karte
- Multimap
Alle oben genannten Container speichern Daten in einer Struktur namens Baum, die eine schnelle Erleichterung ermöglicht
Suchen, Löschen und Einfügen im Gegensatz zu sequentiellen. Container-Set oder Multiset können verschiedene Elemente speichern und Operationen zum Bearbeiten dieser Elemente unter Verwendung der Werte als Schlüssel bereitstellen.
Mit Map oder Multimap werden Elemente paarweise gespeichert, von denen eines als Schlüssel und das andere als Schlüssel bezeichnet wird
nannte den Wert.
Abgeleitete Container:
Die STL stellt drei abgeleitete Container bereit, nämlich Stack, Queue und Priority_queue. Diese werden auch als Containeradapter bezeichnet.
Es gibt drei Arten von abgeleiteten Containern:
1.Stack
2. Warteschlange
3.Priority_quue
Stapel, Warteschlangen und Prioritätswarteschlangen können einfach aus verschiedenen Sequenzcontainern erstellt werden. Die abgeleiteten Container unterstützen keine Iteratoren und können daher nicht zur Datenmanipulation verwendet werden. Sie unterstützen jedoch die zwei Elementfunktionen pop () und push () zum Implementieren von Lösch- und Einfügevorgängen.
Fahren Sie mit diesem Artikel über STL in C ++ fort
Algorithmen
Algorithmen sind Funktionen, die im Allgemeinen in einer Vielzahl von Containern zur Verarbeitung ihres Inhalts verwendet werden können. Obwohl jeder Container Funktionen für seine Grundoperationen bereitstellt, bietet STL mehr als 60 Standardalgorithmen zur Unterstützung erweiterter oder komplexer Operationen. Standardalgorithmen ermöglichen es uns auch, gleichzeitig mit zwei verschiedenen Containertypen zu arbeiten.
STL-Algorithmen verstärken die Philosophie der Wiederverwendbarkeit. Durch die Verwendung dieser Algorithmen können Programmierer viel Zeit und Mühe sparen. Um auf die STL-Algorithmen zugreifen zu können, müssen wir sie in unser Programm aufnehmen.
Der STL-Algorithmus kann basierend auf der Art der von ihnen ausgeführten Operationen wie folgt kategorisiert werden:
Nicht mutierende Algorithmen
Mutierende Algorithmen
Sortieralgorithmen
Algorithmen einstellen
Relationaler Algorithmus
Fahren Sie mit diesem Artikel über STL in C ++ fort
Iteratoren:
Iteratoren wirken wie Zeiger und werden verwendet, um auf Elemente des Containers zuzugreifen. Wir verwenden Iteratoren, um den Inhalt von Containern zu durchlaufen. Iteratoren werden wie Zeiger behandelt. Wir können sie gemäß unseren Anforderungen erhöhen oder verringern. Iteratoren verbinden Container mit Algorithmen und spielen eine wichtige Rolle bei der Manipulation der in den Containern gespeicherten Daten. Sie werden häufig verwendet, um von einem Element zum anderen zu gelangen. Dieser Vorgang wird als Iteration durch den Container bezeichnet.
Es gibt fünf Arten von Iteratoren:
1.Eingabe
2. Ausgabe
3. Vorwärts
4. Bidirektional
5. Zufällig
Iterator | Zugriffsmethode | Bewegungsrichtung | E / A-Fähigkeit | Anmerkung |
Eingang | Linear | Nur vorwärts | Schreibgeschützt | Kann nicht gespeichert werden |
Ausgabe | Linear | Nur vorwärts | Nur schreiben | Kann nicht gespeichert werden |
Nach vorne | Linear | Nur vorwärts | Lesen Schreiben | Kann gespeichert werden |
Bidirektional | Linear | Vorwärts und Rückwärts | Lesen Schreiben | Kann gespeichert werden |
Zufällig | Zufällig | Vorwärts und Rückwärts | Lesen Schreiben Die Gewerkschaftsklausel ist es gewohnt | Kann gespeichert werden |
Verschiedene Arten von Iteratoren müssen mit den verschiedenen Arten von Containern verwendet werden, so dass nur
Sequenz- und assoziative Container dürfen sich durch Iteratoren bewegen. Jeder Iteratortyp wird zum Ausführen bestimmter Funktionen verwendet. Die Eingabe- und Ausgabe-Iteratoren unterstützen die geringsten Funktionen. Sie können nur zum Durchgang in einem Container verwendet werden. Die Vorwärtsiteratoren unterstützen alle Operationen von Eingabe- und Ausgabeiteratoren und behalten auch ihre Position im Container bei. Ein bidirektionaler Iterator unterstützt zwar alle Vorwärtsiteratoroperationen, bietet jedoch die Möglichkeit, sich im Container in Rückwärtsrichtung zu bewegen.
Damit sind wir am Ende dieses Artikels über 'STL in C ++' angelangt. Wenn Sie mehr erfahren möchten, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka wurde entwickelt, um Sie für Kern- und fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring zu schulen.
Hast du eine Frage an uns? Bitte erwähne es im Kommentarbereich dieses Blogs und wir werden uns so schnell wie möglich bei dir melden.