C++ ist eine der mächtigsten und einschüchterndsten Programmiersprachen, die Ihnen als Anfänger begegnen könnten. Der Grund ist ziemlich einfach. Es erfordert viel Code, um die gewünschte Ausgabe zu erzielen. Die Standardvorlagenbibliothek (STL) kann Ihnen helfen, dieses Rätsel zu lösen.

Angesichts des Zeit- und Arbeitsaufwands beim Schreiben von Code für Funktionen wie Sortieren und Suchen kann STL Ihnen dabei helfen, all diese Vorgänge mit nur einer einzigen Codezeile auszuführen. Diese Bibliothek kann für die Problemlösung und die Vorbereitung von technischen Interviews sehr nützlich sein.

Was ist die Standardvorlagenbibliothek?

Die Standard Template Library (STL) ist eine C++-Bibliothek, die aus vorgefertigten Funktionen und Containern besteht. Es enthält einige prominente Vorlagenklassen für gängige Datenstrukturen wie Vektoren, Stapel, Warteschlangen und einige praktische algorithmische Funktionen wie die binäre Suche, um die Programmierung zu vereinfachen.

Die Standard Template Library in C++ besteht aus vier Komponenten:

instagram viewer
  1. Algorithmen
  2. Behälter
  3. Funktionen
  4. Iteratoren

Schauen wir uns die Algorithmen und Container genauer an, da dies die am häufigsten verwendeten Komponenten der STL sind.

Algorithmen in STL

Das Die Header-Datei ist ein Teil der STL, die aus mehreren algorithmischen Funktionen besteht, die verwendet werden können, anstatt sie manuell zu codieren. Einige der enthaltenen Algorithmen sind binäre Suche, Sortierung und Umkehrung, die äußerst nützlich sind.

Zunächst müssen Sie die Header in Ihrer C++-Datei. Die Syntax lautet wie folgt:

#einschließen 

Betrachten Sie für die kommenden Methoden als Beispiel eine Array-Variable mit den Werten {6, 2, 9, 1, 4}.

int arr[] = {6, 2, 9, 1, 4};

Sortieren()

Das Sortieren() -Funktion hilft Ihnen, alle Elemente innerhalb der angegebenen Datenstruktur in aufsteigender Reihenfolge zu sortieren. Diese Funktion benötigt zwei Parameter: den Start-Iterator und den End-Iterator.

Verbunden: Eine Einführung in den Merge-Sort-Algorithmus

Syntax:

sortieren (start_iterator, end_iterator);

Hier ist ein kurzes Beispiel:

sortieren (arr, arr+5);
für (int i = 0; ich < 5; ich++) {
cout << arr[i] << " ";
}

Ausgabe:

1 2 4 6 9

umkehren()

Das umkehren() -Funktion kehrt die Reihenfolge der Elemente in der angegebenen Datenstruktur um. Es akzeptiert zwei Parameter: den Start-Iterator und den End-Iterator.

Syntax:

reverse (start_iterator, end_iterator);

Hier ist ein kurzes Beispiel für die obige Methode:

rückwärts (arr, arr+5);
für (int i = 0; ich < 5; ich++) {
cout << arr[i] << " ";
}

Ausgabe:

4 1 9 2 6

*min_element() und *max_element()

Die Funktionen *max_element() und *min_element() gibt den maximalen bzw. minimalen Wert innerhalb der angegebenen Datenstruktur zurück. Beide Funktionen akzeptieren zwei Argumente: den Startiterator und den Enditerator.

Syntax:

*max_element (start_iterator, end_iterator);
*min_element (start_iterator, end_iterator);

Lassen Sie uns herausfinden, welche Werte diese Funktionen beim Aufrufen im Beispielarray zurückgeben:

cout << *max_element (arr, arr+5) << endl;
cout << *min_element (arr, arr+5) << endl;

Ausgabe:

9
1

binäre Suche()

Das binäre Suche() -Methode wird verwendet, um herauszufinden, ob der angegebene Wert in der Datenstruktur vorhanden ist oder nicht. Es akzeptiert drei Argumente: den Start-Iterator, den End-Iterator und den Wert, den Sie suchen möchten.

Die binäre Suche funktioniert nur bei sortierten Datenstrukturen. Daher müssen Sie die. anrufen Sortieren() Methode zuerst vor dem binäre Suche() Methode.

Syntax:

binary_search (start_iterator, end_iterator, value_to_find)

Hier ist eine Demonstration dieser Methode:

sortieren (arr, arr+5);
binäre_suche (arr, arr+5, 2)? cout << "Element gefunden": cout << "Element nicht gefunden";
binäre_suche (arr, arr+5, 7)? cout << "Element gefunden": cout << "Element nicht gefunden";

Ausgabe:

Element gefunden
Element nicht gefunden

Anzahl()

Das Anzahl() -Methode gibt die Anzahl des Vorkommens des angegebenen Werts innerhalb der Datenstruktur zurück. Es braucht drei Argumente: den Start-Iterator, den End-Iterator und den zu zählenden Wert.

Syntax:

count (start_iterator, end_iterator, value_to_count);

Hier ist ein Beispiel für diese Methode:

cout << count (arr, arr+5, 2) << endl;

Ausgabe:

1

Container in STL

Container sind die Datenstrukturen, die Objekte und Daten speichern. Vektoren, Listen, Stacks, Queues, Sets und Maps sind einige der Beispiele, in denen Daten gemäß dem angegebenen primitiven Datentyp gespeichert werden. Sie können diese Container verwenden, indem Sie ihre jeweiligen Header in die C++-Datei importieren.

Beim Initialisieren der Containervariablen müssen Sie die primitiven Daten erwähnen, wie z int, verkohlen, Schnur innerhalb der <> Klammern.

Sehen wir uns einige dieser Container genauer an:

Vektor

Vektoren sind dynamische Arrays, die in der Größe veränderbar und flexibel zu bearbeiten sind. Wenn Sie ein Element aus dem Vektor einfügen oder daraus löschen, wird die Größe des Vektors automatisch angepasst. Dies ist ähnlich wie die ArrayList-Datenstruktur auf Java.

Syntax:

#einschließen 
Vektor Variablennamen;

Hier sind einige wichtige Vektormethoden:

  1. push_back (Wert): Diese Methode hängt die Daten an den Vektor an.
  2. Pop zurück(): Diese Methode entfernt das letzte Element aus dem Vektor.
  3. einfügen (Index, Wert): Diese Methode fügt neue Elemente vor dem Element an der angegebenen Position ein.
  4. Größe(): Diese Methode gibt die Größe des Vektors zurück.
  5. leer(): Diese Methode prüft, ob der Vektor leer ist oder nicht.
  6. Vorderseite(): Diese Methode gibt den ersten Wert des Vektors zurück.
  7. zurück(): Die Methode back gibt den letzten Wert des Vektors zurück.
  8. bei (Index): Diese Methode gibt den Wert an der angegebenen Position zurück.
  9. löschen (indexieren): Die Löschmethode entfernt Elemente aus dem angegebenen Index.
  10. klar(): Diese Methode löscht alle Elemente im Vektor.
Vektor < int > v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back();
auto i = v.insert (v.begin() + 1, 7);
cout << "Die Größe des angegebenen Vektors " << v.size() << endl;
if (v.leer()) {
cout << "Vektor ist leer" << endl;
} sonst {
cout << "Vektor ist nicht leer" << endl;
}
cout << "Element an erster Position ist " << v.front() << endl;
cout << "Element an letzter Position ist " << v.back() << endl;
cout << "Element an der angegebenen Position ist " << v.at (4) << endl;
v.löschen (v.begin() + 1);
für (int i = 0; ich < v.größe (); ich++) {
cout << v[i] << " ";
}

Ausgabe:

Die Größe des gegebenen Vektors 6
Vektor ist nicht leer
Element an der ersten Position ist 23
Element an der letzten Position ist 5
Element an der angegebenen Position ist 10
23 12 56 10 5

Warteschlange

In der Queue-Datenstruktur werden Elemente von hinten eingefügt und von vorne gelöscht. Daher folgt es dem FIFO-Ansatz ("first in, first out").

Syntax:

#einschließen 
Warteschlange Variablennamen;

Hier sind einige wichtige Warteschlangenmethoden:

  1. drücken (Wert): Diese Methode fügt Elemente zur Warteschlange hinzu.
  2. Pop(): Diese Methode löscht das erste Element der Warteschlange.
  3. Größe(): Diese Methode gibt die Größe der Warteschlange zurück.
  4. Vorderseite(): Diese Methode gibt das erste Element der Warteschlange zurück.
  5. zurück(): Diese Methode gibt das letzte Element der Warteschlange zurück.
Warteschlange < int > q;
q.drücken (30);
q.drücken (40);
q.drücken (50);
q.drücken (60);
q.drücken (70);
cout << "Das erste Element ist " << q.front() << endl;
cout << "Das letzte Element ist " << q.back() << endl;
cout << "Die Größe der Warteschlange ist " << q.size() << endl;
q.pop();
cout << "Alle Elemente der Warteschlange drucken" << endl;
while (!q.leer()) {
cout << q.front() << " ";
q.pop();
}

Ausgabe:

Das erste Element ist 30
Das letzte Element ist 70
Die Größe der Warteschlange beträgt 5
Drucken aller Elemente der Warteschlange
40 50 60 70

Stapel

Stapelbehälter arbeiten nach der LIFO-Methode. LIFO steht für „last in, first out“. Daten werden vom selben Ende gepusht und gepoppt.

Syntax:

#einschließen 
Stapel Variablennamen;

Hier sind einige wichtige Stapelmethoden:

  1. drücken (Wert): Diese Methode schiebt das Element in den Stack.
  2. Pop(): Diese Methode löscht das oberste Element des Stapels.
  3. oben(): Diese Methode gibt den Wert des letzten im Stack eingetragenen Elements zurück.
  4. Größe(): Diese Methode gibt die Größe des Stapels zurück.
  5. leer(): Diese Methode prüft, ob der Stack leer ist oder nicht.
Stapel < int > s;
s.drücken (30);
s.drücken (40);
s.drücken (50);
s.drücken (60);
cout << "Der oberste Stapel enthält " << s.top() << endl;
s.pop();
cout << "Die Spitze des Stapels nach der Pop-Operation: " << s.top() << endl;
cout << "Alle Elemente des Stapels drucken" << endl;
while (!s.leer()) {
cout << s.top() << " ";
s.pop();
}

Ausgabe:

Die Spitze des Stapels enthält 60
Die Spitze des Stapels nach dem Ausführen des Pop-Vorgangs: 50
Drucken aller Elemente des Stapels
50 40 30

einstellen

Set-Container werden verwendet, um eindeutige Werte zu speichern, und der Wert des Elements kann nicht mehr geändert werden, nachdem es in das Set eingefügt wurde. Alle Elemente des Sets werden sortiert gespeichert. Der Set-Container ähnelt dem Datenstruktur in Python festlegen.

Syntax:

#einschließen 
einstellen Variablennamen;

Hier sind einige wichtige Set-Methoden:

  1. einfügen (Wert): Diese Methode fügt Elemente in die Menge ein.
  2. Start(): Diese Methode gibt den Iterator zum ersten Element der Menge zurück.
  3. Ende(): Diese Methode gibt den Iterator zum letzten Element der Menge zurück.
  4. Größe(): Diese Methode gibt die Größe des Sets zurück.
  5. leer(): Diese Methode prüft, ob die Menge leer ist oder nicht.
  6. finden (Wert): Diese Methode gibt den Iterator an das im Parameter übergebene Element zurück. Wenn das Element nicht gefunden wird, gibt diese Funktion den Iterator an das Ende der Menge zurück.
  7. löschen (Wert): Diese Methode hat das angegebene Element aus der Menge gelöscht.
setze  s;
s. einfügen (20);
s. einfügen (30);
s. einfügen (40);
s. einfügen (50);
s. einfügen (60);
s. einfügen (60);
s. einfügen (60);
auto i = s.begin();
cout << "Element an erster Stelle" << * i << endl;
cout << "Die Größe der Menge " << s.size() << endl;
s.find (20) != s.end()? cout << "Element gefunden" << endl: cout << "Element nicht gefunden" << endl;
s.löschen (30);
cout << "Alle Elemente drucken" << endl;
for (auto i = s.begin(); ich != am Ende(); ich++) {
cout << * i << " ";
}

Ausgabe:

Element an der ersten Position 20
Die Größe des Sets 5
Element gefunden
Drucken aller Elemente
20 40 50 60

C++ muss nicht schwer sein

Wie bei jeder anderen Fertigkeit ist Übung unerlässlich, um das Beste aus der STL herauszuholen. Diese Container und Algorithmen können Ihnen helfen, viel Zeit zu sparen und sind einfach zu verwenden. Beginnen Sie damit, die oben gezeigten Beispiele zu üben, und Sie werden es schließlich auch in Ihren eigenen Projekten verwenden.

Wenn Sie jedoch zum ersten Mal C++ lernen, lernen Sie zunächst die Grundlagen, bevor Sie die STL verstehen.

Email
C++-Programmierung lernen: 6 Sites zum Einstieg to

Möchten Sie C++ lernen? Hier sind die besten Websites und Online-Kurse zu C++ für Anfänger und erfahrene Programmierer.

Weiter lesen

Verwandte Themen
  • Programmierung
  • Codierungs-Tutorials
  • Funktionale Programmierung
Über den Autor
Nitin Ranganath (22 Artikel veröffentlicht)

Nitin ist ein begeisterter Softwareentwickler und Student der Computertechnik, der Webanwendungen mit JavaScript-Technologien entwickelt. Er arbeitet als freiberuflicher Webentwickler und schreibt in seiner Freizeit gerne für Linux und Programmierung.

Mehr von Nitin Ranganath

Abonnieren Sie unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Noch ein Schritt…!

Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.

.