Vektor in C++ Standard Template Library (STL) mit Beispiel

โšก Intelligente Zusammenfassung

Vektor in C++ ist ein dynamisches Array aus der Standard Template Library, das seine GrรถรŸe automatisch anpasst, wenn Elemente hinzugefรผgt oder entfernt werden, und die Elemente im zusammenhรคngenden Speicher speichert, sodass Programmierer mit Hilfe von Iteratoren darauf zugreifen und sie durchlaufen kรถnnen.

  • ๐Ÿ“ฆ Dynamisches Array: A C++ Ein Vektor wรคchst oder schrumpft automatisch, im Gegensatz zu einem statischen Array mit fester GrรถรŸe.
  • ๐Ÿงฉ Header und Syntax: Fรผgen Sie den Vektorkopf ein und deklarieren Sie anschlieรŸend den Vektor. Name zum Speichern typisierter Elemente.
  • ๐Ÿงญ Iteratoren: begin(), end(), cbegin() und cend() bewegen sich wie Zeiger รผber Vektorelemente.
  • ๏ธ Modifikatoren: push_back(), insert(), pop_back(), erase() und clear() verรคndern den Inhalt eines Vektors.
  • ๐Ÿ“ Tragfรคhigkeit: size(), capacity(), max_size(), resize() und empty() melden oder passen den Speicherplatz an.
  • ๐Ÿค– KI-Unterstรผtzung: GitHub Copilot und รคhnliche KI-Assistenten erstellen Vektoroperationen anhand eines kurzen Kommentars.

C++ Vektor-STL

Non-Profit C++ Vektor?

A C++ Vector ist ein dynamisches Array, dessen GrรถรŸe sich automatisch รคndern kann. Die GrรถรŸenรคnderung erfolgt, nachdem ein Element zum Vektor hinzugefรผgt oder daraus gelรถscht wurde. Die Speicherung erfolgt automatisch durch den Container. Die Elemente eines Vektors werden in einem zusammenhรคngenden Speicher abgelegt. Dies ermรถglicht C++ Programmierer kรถnnen mithilfe von Iteratoren auf die Vektorelemente zugreifen und sie durchlaufen.

Das Einfรผgen neuer Daten in einen Vektor erfolgt am Ende des Vektors. Dies erfordert differentielle Zeit. Das Entfernen eines Elements aus einem Vektor benรถtigt konstante Zeit, da der Vektor nicht vergrรถรŸert oder verkleinert werden muss. Das Einfรผgen oder Entfernen eines Elements am Anfang des Vektors benรถtigt lineare Zeit.

Bevor man Code mit Vektoren schreibt, ist es hilfreich zu wissen, wann sie der richtige Container sind.

Wann sollte ein Vektor verwendet werden?

A C++ Vektor sollte unter den folgenden Umstรคnden verwendet werden:

  • Beim Umgang mit Datenelementen, die sich stรคndig รคndern.
  • Wenn die GrรถรŸe der Daten vor Beginn nicht bekannt ist, mรผssen Sie bei diesem Vektor keine maximale ContainergrรถรŸe festlegen.

So initialisieren Sie Vektoren in C++

Die Syntax von Vektoren in C++ ist:

vector <data-type> name (items)

Wie oben gezeigt, beginnen wir mit dem Schlรผsselwort vector.

  • Das Datentyp ist der Datentyp der Elemente, die im Vektor gespeichert werden sollen.
  • Das Name ist der Name des Vektors bzw. der Datenelemente.
  • Das Artikel Gibt die Anzahl der Elemente des Vektordatensatzes an. Dieser Parameter ist optional.

Sobald ein Vektor existiert, bieten Iteratoren eine zeigerรคhnliche Mรถglichkeit, sich รผber seine Elemente zu bewegen.

Iteratoren

Iteratoren dienen dazu, auf die in einem Vektor gespeicherten Elemente zuzugreifen. Sie sind Objekte, die wie Zeiger funktionieren. Hier sind die gรคngigen, von der Bibliothek unterstรผtzten Iteratoren. C++ Vektoren:

  • vector::begin(): Es ergibt einen Iterator, der auf das erste Element des Vektors zeigt.
  • vector::end(): Es ergibt einen Iterator, der auf das hinter dem Ende liegende Element des Vektors zeigt.
  • vector::cbegin(): Es ist dasselbe wie vector::begin(), aber es hat nicht die Mรถglichkeit, Elemente zu verรคndern.
  • vector::cend(): Es ist dasselbe wie vector::end(), kann aber keine Vektorelemente verรคndern.

Das folgende Beispiel fรผllt einen Vektor und durchlรคuft ihn dann mit verรคnderlichen und konstanten Iteratoren.

Beispiel 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

Ausgang:

C++ Vektoriteratoren Beispiel 1 Ausgabe

Hier ist ein Screenshot des Codes:

C++ Vektoriteratoren Beispiel 1 Code

Code Erlรคuterung:

  1. Fรผgen Sie die iostream-Header-Datei in unseren Code ein. Dadurch kรถnnen wir von der Konsole lesen und darauf schreiben.
  2. Integrieren Sie die Vektor-Headerdatei in unseren Code. Dadurch kรถnnen wir mit Vektoren arbeiten in C++.
  3. SchlieรŸen Sie den std-Namespace ein, um seine Klassen und Funktionen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf, in der die Logik des Programms hinzugefรผgt werden soll.
  5. Das { markiert den Anfang des Hauptteils der main()-Funktion.
  6. Deklarieren Sie einen Vektor namens nums, um eine Reihe von Ganzzahlen zu speichern.
  7. Wir erstellen eine for-Schleife, um den Vektor zu durchlaufen. Die Variable hilft uns dabei, die Vektorelemente vom ersten bis zum fรผnften Element zu durchlaufen.
  8. Schieben Sie Elemente von hinten in die Vektornummer. Bei jeder Iteration wird dadurch der aktuelle Wert der Variablen a zum Vektor hinzugefรผgt, der zwischen 1 und 5 liegt.
  9. Drucken Sie einen Text auf der Konsole.
  10. Verwenden Sie eine Iteratorvariable a, um die Elemente von Vektorzahlen vom Anfang bis zum Element hinter dem Ende zu durchlaufen. Beachten Sie, dass wir die Iteratoren vector::begin() und vector::end() verwenden.
  11. Geben Sie fรผr jede Iteration die Werte aus, auf die die Iteratorvariable a auf der Konsole zeigt.
  12. Drucken Sie einen Text auf der Konsole. Das \n ist ein Zeichen fรผr eine neue Zeile, das den Cursor in die neue Zeile bewegt, um von dort aus zu drucken.
  13. Verwenden Sie eine Iteratorvariable, um die Elemente des Vektors `nums` vom Anfang bis zum letzten Element zu durchlaufen. Beachten Sie, dass wir die Iteratoren `vector::cbegin()` und `vector::cend()` verwenden.
  14. Geben Sie fรผr jede Iteration die Werte aus, auf die die Iteratorvariable a auf der Konsole zeigt.
  15. Die Hauptfunktion sollte einen Wert zurรผckgeben, wenn das Programm erfolgreich ausgefรผhrt wird.
  16. Ende des Hauptteils der main()-Funktion.

Modifikatoren

Modifikatoren werden verwendet, um die Bedeutung des angegebenen Datentyps zu รคndern. Hier sind die hรคufigsten Modifikatoren in C++:

  • vector::push_back(): Dieser Modifikator drรผckt die Elemente von hinten.
  • vector::insert(): Zum Einfรผgen neuer Elemente in einen Vektor an einer bestimmten Stelle.
  • vector::pop_back(): Dieser Modifikator entfernt die Vektorelemente von der Rรผckseite.
  • vector::erase(): Es wird zum Entfernen einer Reihe von Elementen vom angegebenen Speicherort verwendet.
  • vector::clear(): Es entfernt alle Vektorelemente.

Im nรคchsten Beispiel werden diese Modifikatoren nacheinander angewendet, um zu sehen, wie sich ein Vektor verรคndert.

Beispiel 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

Ausgang:

C++ Vektormodifikatoren Beispiel 2 Ausgabe

Hier ist ein Screenshot des Codes:

C++ Vektormodifikatoren Beispiel 2 Code

Code Erlรคuterung:

  1. Fรผgen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  2. Fรผgen Sie die Vektor-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  3. SchlieรŸen Sie den std-Namespace ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte in den Hauptteil eingefรผgt werden.
  5. Der Anfang des Hauptteils der main()-Funktion.
  6. Deklarieren Sie einen Vektor namens nums, um einige ganzzahlige Werte zu speichern.
  7. Speichern Sie 5 Elemente in den Vektorzahlen. Jeweils mit einem Wert von 1.
  8. Drucken Sie einen Text auf der Konsole.
  9. Verwenden Sie eine Iteratorvariable a, um รผber die Elemente von Vektorzahlen zu iterieren.
  10. Drucken Sie die Werte der Vektorzahlen fรผr jede Iteration auf der Konsole aus.
  11. Fรผgen Sie am Ende der Vektorzahlen den Wert 2 hinzu.
  12. Deklarieren Sie eine ganzzahlige Variable n, um die GrรถรŸe der Vektorzahlen zu speichern.
  13. Drucken Sie den letzten Wert von Vektorzahlen zusammen mit anderem Text. Es sollte eine 2 zurรผckgeben.
  14. Entfernen Sie das letzte Element aus den Vektorzahlen. Die 2 wird entfernt.
  15. Text auf der Konsole drucken. Das \n bewegt den Cursor in die neue Zeile, um den Text dort zu drucken.
  16. Verwenden Sie eine Iteratorvariable a, um รผber die Elemente von Vektorzahlen zu iterieren.
  17. Drucken Sie die Werte der Vektorzahlen fรผr jede Iteration auf der Konsole aus.
  18. Fรผgen Sie den Wert 7 am Anfang der Vektorzahlen ein.
  19. Gibt den ersten Wert von Vektorzahlen zusammen mit anderem Text aus. Es sollte 7 zurรผckgeben.
  20. Lรถschen Sie alle Elemente aus den Vektornummern.
  21. Drucken Sie die GrรถรŸe der Vektornummer zusammen mit anderem Text aus, nachdem Sie alle Inhalte gelรถscht haben. Es sollte 0 zurรผckgeben.
  22. Ende des Hauptteils der main()-Funktion.

Kapazitรคt

Verwenden Sie Folgendes Funktionen um die Kapazitรคt eines Vektors zu bestimmen:

  • GrรถรŸe() โ€“ Es gibt die Anzahl der Elemente in einem Vektor zurรผck.
  • Maximale GrรถรŸe() โ€“ Es gibt die hรถchste Anzahl von Elementen zurรผck, die ein Vektor speichern kann.
  • Kapazitรคt() โ€“ Es gibt die Menge an Speicherplatz zurรผck, die einem Vektor zugewiesen wurde.
  • GrรถรŸe รคndern() โ€“ Der Container wird so vergrรถรŸert, dass er n Elemente aufnehmen kann. Ist die aktuelle VektorgrรถรŸe grรถรŸer als n, werden die hinteren Elemente entfernt. Ist die aktuelle VektorgrรถรŸe kleiner als n, werden zusรคtzliche Elemente am Ende des Vektors hinzugefรผgt.
  • Leer() โ€“ Die Funktion gibt โ€žtrueโ€œ zurรผck, wenn ein Vektor leer ist. Andernfalls gibt sie โ€žfalseโ€œ zurรผck.

Dieses letzte Beispiel gibt Auskunft รผber die Speicherung eines Vektors und passt diese mithilfe der oben genannten Kapazitรคtsfunktionen an.

Beispiel 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

Ausgang:

C++ Vektorkapazitรคt Beispiel 3 Ausgabe

Hier ist ein Screenshot des Codes:

C++ Vektorkapazitรคt Beispiel 3 Code

Code Erlรคuterung:

  1. Fรผgen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktion zu nutzen.
  2. Fรผgen Sie die Vektor-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  3. Fรผgen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefรผgt werden.
  5. Erstellen Sie einen Vektor mit dem Namen vector1, um Ganzzahlen zu speichern.
  6. Verwenden Sie eine for-Schleife, um die Variable x mit Werten von 1 bis 10 zu erstellen.
  7. Schieben Sie die Werte der Variablen x in den Vektor.
  8. Drucken Sie die GrรถรŸe des Vektors zusammen mit anderem Text auf der Konsole.
  9. Drucken Sie die Kapazitรคt des Vektors zusammen mit anderem Text auf der Konsole aus.
  10. Drucken Sie die maximale Anzahl von Elementen, die der Vektor zusammen mit anderem Text auf der Konsole enthalten kann.
  11. ร„ndern Sie die GrรถรŸe des Vektors so, dass er nur noch 5 Elemente enthรคlt.
  12. Drucken Sie die neue GrรถรŸe des Vektors neben anderem Text.
  13. Prรผfen Sie, ob der Vektor nicht leer ist.
  14. Text auf der Konsole drucken, wenn der Vektor nicht leer ist.
  15. Verwenden Sie eine else-Anweisung, um anzugeben, was zu tun ist, wenn der Vektor leer ist.
  16. Text, der auf der Konsole gedruckt werden soll, wenn der Vektor leer ist.
  17. Das Programm muss bei erfolgreichem Abschluss einen Wert zurรผckgeben.
  18. Ende des main()-Funktionskรถrpers.

Hรคufig gestellte Fragen

Ein Vektor ist ein dynamisches Array, das seine GrรถรŸe automatisch anpasst und seine eigene GrรถรŸe kennt, wรคhrend ein eingebautes Array eine feste, zur Kompilierzeit festgelegte Lรคnge hat. Vektoren verwalten den Speicher automatisch; rohe Arrays hingegen nicht.

Verwenden Sie den Indexoperator, z. B. nums[0], fรผr einen schnellen Direktzugriff. Die Memberfunktion at(), z. B. nums.at(0), bewirkt dasselbe, lรถst aber eine Out_of_Range-Ausnahme aus, wenn der Index ungรผltig ist, wodurch die Verwendung sicherer ist.

Deklarieren Sie einen Vektor, dessen Elemente selbst Vektoren sind, zum Beispiel Vektor Das Raster lรคsst sich mit Konstruktoren oder `push_back rows` skalieren. Jeder innere Vektor kann unabhรคngig wachsen, wodurch eine flexible, skalierbare Matrix entsteht.

Ein Vektor speichert Elemente im zusammenhรคngenden Speicher und ermรถglicht so einen schnellen Direktzugriff. Eine `std::list` hingegen ist eine doppelt verkettete Liste, die schnelles Einfรผgen und Lรถschen an beliebiger Stelle erlaubt, aber keinen direkten Indexzugriff. Wรคhlen Sie die Speicherart entsprechend Ihrem Zugriffsmuster.

Fรผgen Sie die Headerdatei des Algorithmus ein und rufen Sie `std::sort` mit den Iteratoren `begin` und `end` auf, z. B. `sort(nums.begin(), nums.end())`. StandardmรครŸig wird aufsteigend sortiert; รผbergeben Sie einen benutzerdefinierten Vergleichsoperator oder einen grรถรŸeren Wert. () zum Sortieren in absteigender Reihenfolge.

Ja. Ein Vektor ist eine Vorlage und kann beliebige Datentypen aufnehmen, darunter Zeichenketten, benutzerdefinierte Klassen und sogar andere Vektoren. Deklarieren Sie den Elementtyp innerhalb der spitzen Klammern, z. B. `vector`. oder Vektor Die

Ja. KI-Codierungsassistenten wandeln kurze Anweisungen oder Kommentare in funktionierenden Vektorcode um, inklusive Deklarationen, Push-Back-Schleifen und Iterationen. รœberprรผfen Sie stets die vorgeschlagenen Datentypen, Grenzen und die Kapazitรคtsverwaltung, da KI projektspezifische Anforderungen รผbersehen kann.

Ja. GitHub-Copilot Es schlรคgt Vektordeklarationen, `push_back`- und `insert`-Aufrufe sowie Iteratorschleifen wรคhrend der Eingabe vor. Es verarbeitet wiederkehrenden Boilerplate-Code gut, dennoch sollten Sie Indizes, GrรถรŸenรคnderungen und Logik vor dem Kompilieren รผberprรผfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: