STL in c ++: Alles was Sie wissen müssen

Dieser Artikel vermittelt Ihnen detaillierte und umfassende Kenntnisse über STL in C ++ und gibt Ihnen auch eine Vorstellung von den verschiedenen Containern.

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.

Container-STL-in-C++

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:

  1. einstellen
  2. Multiset
  3. Karte
  4. 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.