Initialisierung von 2D-Vektoren in C++

Muhammad Husnain 12 Oktober 2023
  1. Vektoren in C++
  2. Initialisierung von Vektoren in C++
  3. Greifen Sie in C++ auf die Werte eines Vektors zu
  4. Initialisierung von 2-dimensionale Vektoren in C++
Initialisierung von 2D-Vektoren in C++

In diesem kurzen Programmier-Tutorial geht es um die Verwendung von 2D-Vektoren in C++.

Bevor wir uns mit den 2D-Vektoren befassen, sehen wir zunächst eine kurze Einführung in Vektoren und ihre Verwendung in C++. Dann werden wir zu mehrdimensionalen Vektoren und ihrer Verwendung übergehen.

Vektoren in C++

Vektoren verhalten sich genau wie dynamische Arrays mit der zusätzlichen Funktion, dass sie beim Einfügen oder Löschen eines Elements automatisch ihre Größe ändern. Vektoren können homogene Elemente speichern (d. h. Elemente ähnlicher Datentypen).

Ein Vektor kann die Größe seines Containers oder Speichers automatisch mit den Hinzufügungen und Löschungen ändern.

Alle Mitglieder eines Vektors werden im Speicher gespeichert. Jedes nächste Element grenzt an das vorherige an, sodass Iteratoren leicht darauf zugreifen können.

Wenn ein neues Element hinzugefügt wird, wird es am Ende platziert, und es dauert bei jedem Einfügen unterschiedlich lange, weil es zuerst prüft, ob der Speicher verfügbar ist oder nicht. Wenn der Speicher nicht verfügbar ist, weist er zuerst etwas neuen Speicher zu und fügt dann das Element in den Vektor ein.

Andererseits dauert das Entfernen eines Elements aus dem letzten eine konstante Zeit, da die Größe nicht bei jedem Entfernen geändert wird.

Initialisierung von Vektoren in C++

Wir haben Vektorbibliotheksdateien in der C++ Standard Template Library (STL). Um Vektoren verwenden zu können, müssen wir daher die erforderliche Header-Datei wie folgt einfügen:

#include <vector>

Um einen Vektor zu deklarieren, wird die folgende Syntax befolgt:

vector<int> v1;

Bitte beachten Sie, dass wir die Größe der Vektoren nicht angeben müssen, da die Größe der Vektoren bei Bedarf dynamisch und automatisch wachsen kann. Wir können die Initialisierungsliste oder die einheitliche Initialisierung verwenden, um den Vektor zu initialisieren.

Diese beiden Methoden werden im folgenden Beispiel demonstriert:

vector<int> vec1 = {21, 22, 23, 24, 25};  // initializer list method
vector<int> vec2{21, 22, 23, 24, 25};     // uniform initialization

Es gibt eine andere Methode zum Initialisieren eines Vektors, wenn wir den gesamten Vektor mit demselben Wert füllen möchten. Dies ist unten gezeigt:

vector<int> vec3(4, 11);

Dadurch wird ein Vektor der Größe 4 initialisiert, und alle Elemente haben den Wert 11 wie folgt: {11,11,11,11}.

Wenn wir die Daten in dem Moment, in dem wir den Vektor deklariert haben, nicht in den Vektor eingeben, können wir sie außerdem später mit der Funktion push_back hinzufügen. Die Syntax dieser Funktion lautet:

vec1.push_back(value);

Dadurch wird der Wert als letztes Element des Vektors eingefügt.

Greifen Sie in C++ auf die Werte eines Vektors zu

Es gibt bestimmte Verfahren zur Iteration in Vektoren.

Funktion Zweck
begin() Diese Funktion gibt einen Iteratorzeiger auf das erste Element des Vektors zurück.
end() Diese Funktion gibt einen Iteratorzeiger auf das letzte Element des Vektors zurück.
size() Diese Funktion gibt die Gesamtgröße des Vektors zurück, also wie viele Elemente er hat.
at(p) Diese Funktion gibt den Zeiger auf das Element an der Position p im Vektor zurück.
empty() Diese Funktion prüft, ob der Vektor leer ist oder nicht.

Diese Funktionen werden im folgenden Codeausschnitt demonstriert:

#include <iostream>
#include <vector>
using namespace std;

int main() {
  vector<int> vec1;
  for (int j = 1; j <= 5; j++) vec1.push_back(j + 1);
  cout << "Size: " << vec1.size() << endl;
  cout << "Output of begin and end functions: ";
  for (auto a = vec1.begin(); a != vec1.end(); ++a) cout << *a << " ";
  cout << endl;
  cout << "Element at position 3: " << vec1.at(3) << endl;
  return 0;
}

Ausgabe:

Size: 5
Output of begin and end functions: 2 3 4 5 6
Element at position 3: 5

Initialisierung von 2-dimensionale Vektoren in C++

Wie 2D-Arrays sind auch 2D-Vektoren ein Vektor von Vektoren. Jedes Element eines solchen Vektors ist selbst ein Vektor.

Wie in gezackten Java-Arrays können wir an jeder Position eines 2D-Vektors einen Vektor mit mehreren Größen haben. Dies verhält sich wie eine Matrix mit einer bestimmten Anzahl von Zeilen und Spalten.

Der Unterschied besteht darin, dass jede Zeile eine variable Anzahl von Spalten haben kann.

Syntax für Deklaration:

vector<vector<int>> vec1{{1, 1, 0}, {0, 2}, {2, 1, 3}};

Da es sich um eine 2D-Struktur handelt, benötigen wir zwei Schleifen zum Durchlaufen dieses Vektors – eine Schleife zum Durchlaufen von Zeilen und die innere Schleife zum Durchlaufen von Spalten.

for (int a = 0; a < vec1.size(); a++) {
  for (int b = 0; b < vec1[a].size(); b++) cout << v1[a][b] << " ";

Stellen Sie sicher, dass die Funktion size() nicht die Gesamtzahl der Elemente im Vektor zurückgibt. Stattdessen gibt es die Gesamtzahl der Vektoren in diesem Vektor zurück.

Wir können diesen Vektor auch initialisieren, indem wir die Anzahl der Zeilen und Spalten wie folgt angeben:

int rows = 3;
int columns = 4;
vector<vector<int>> vec1(rows, vector<int>(columns));

Schauen wir uns den vollständigen Code zum Erstellen von 2D-Vektoren an:

#include <iostream>
#include <vector>
using namespace std;

int main() {
  int rows = 3;
  int columns = 4;
  vector<vector<int>> vec(rows, vector<int>(columns));
  for (int a = 0; a < rows; a++)  // loop for initializing the vector
  {
    for (int b = 0; b < columns; b++) {
      vec[a][b] = a * b;
    }
    cout << endl;
  }
  for (int a = 0; a < rows; a++)  // loop for displaying the values of vector
  {
    for (int b = 0; b < columns; b++) {
      cout << vec[a][b] << " ";
    }
    cout << endl;
  }
  return 0;
}

Ausgabe:

0 0 0 0
0 1 2 3
0 2 4 6
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Verwandter Artikel - C++ Vector