logo

2D-Vektor in C++ mit benutzerdefinierter Größe

Ein 2D-Vektor ist ein Vektor des Vektors. Wie bei 2D-Arrays können wir einen 2D-Vektor deklarieren und ihm Werte zuweisen!

Vorausgesetzt, Sie sind mit einem Normalenvektor in C++ vertraut, zeigen wir Ihnen anhand eines Beispiels, wie sich ein 2D-Vektor von einem Normalenvektor unterscheidet:



C++






/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Element eins mit 2 Werten darin. */ {1, 2}, /* Element zwei mit 3 Werten darin. */ {4, 5, 6}, /* Element drei mit 4 Werten darin. */ {7, 8, 9, 10} }; /* Jetzt drucken wir den Vektor aus, den wir gerade mithilfe einer einfachen verschachtelten for-Schleife definiert haben. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }>



>

>

In einem 2D-Vektor ist jedes Element ein Vektor.

Zeitkomplexität: O(1)

Hilfsraum: O(1)

C++




/*> C++ program to create a 2D vector where> every row has a certain number of values> as defined by the user.(On line 13)> */> > #include> #include> using> namespace> std;> int> main()> {> > >/* Here we tell how many rows> >the 2D vector is going to have. */> >int> row = 5;> > >/* We define the number of values> >each row is supposed to have. */> >int> column[] = {5, 3, 4, 2, 1};> > >/*> >We now create a vector of vector with size> >equal to row.> >*/> > >vectorint>> vec(Zeile); /* In Zeile 21 haben wir einen 2D-Vektor erstellt und ihm eine Kapazität von 'row' (in diesem Fall 5) Einheiten zugewiesen. */ /* Jetzt erstellen wir die Struktur unseres 2D-Vektors, indem wir den Wert von Zeilen und Spalten über eine verschachtelte for-Schleife zuweisen. */ for(int i = 0; i { /* Deklarieren der Größe der Spalte. */ int col = Column[i]; /* In der 43. Zeile deklarieren wir die i-te Zeile zur Größe der Spalte. Wir erstellen einen Normalenvektor der Kapazität „col“, der in jeder Iteration der for-Schleife die Werte innerhalb jeder Zeile */ vec[i] = Vektor definiert (col); for(int j = 0; j { vec[i][j] = j + 1; } } /* Wir verwenden nun endlich eine einfache verschachtelte for-Schleife, um den 2D-Vektor zu drucken, den wir gerade oben erstellt haben. */ for(int i = 0; i { for (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

Ausgabe

1 2 3 4 5 6 7 8 9>

Zeitkomplexität: O(N*N)

Hilfsraum: O(N*N)

Ein weiterer Ansatz, um auf die Vektorelemente zuzugreifen:

C++




<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>>
class='comments'>/* C++-Code zur Demonstration eines 2D-Vektors mit darin enthaltenen Elementen (Vektoren). */div>
class='preprocessor'>#include div>
class='preprocessor'>#include div>
class='keywordbold'>using>namespace>std; div>
class='undefinierte Leerzeichen'> div>
class='color1bold'>int>main() div>
class='plain'>{ div>
class='undefinierte Räume'>>/* Nachfolgend initialisieren wir einen 2D-Vektor mit dem Namen 'vect' in Zeile 12 und deklarieren dann die Werte in Zeile 14, 15 bzw. 16. */div>
class='undefinierte Leerzeichen'> div>
class='undefinierte Leerzeichen'>>vectorclass='color1bold'>intclass='plain'>>> vect div>
class='undefinierte Leerzeichen'>>{ div>
class='undefinierte Leerzeichen'>>{1, 2, 3}, div>
class='undefinierte Leerzeichen'>>{4, 5, 6}, div>
class='undefinierte Leerzeichen'>>{7, 8, 9} div>
class='undefinierte Leerzeichen'>>}; div>
class='undefinierte Leerzeichen'> div>
class='undefinierte Leerzeichen'>>/* Jetzt drucken wir die Werte, die wir gerade in den Zeilen 14, 15 und 16 deklariert haben, mithilfe einer einfachen verschachtelten for-Schleife mit Hilfe eines Iterators aus. */div>
class='undefinierte Leerzeichen'> div>
class='undefinierte Räume'>>/* vector vect Wir können diese Deklaration in zwei Teile unterteilen, was uns hilft, die folgenden Konzepte zu verstehen. 1. vect ist ein 2D-Vektor, der aus mehreren Elementen vom Typ Vektor besteht. 2. Vektor ist ein 1D-Vektor, der aus mehreren int-Daten besteht. Wir können also den von STL bereitgestellten Iterator anstelle der in der for-Schleife verwendeten i,j-Variablen verwenden. Es kann den Fehler reduzieren, der bei i-, j-Operationen (i++, j++) auftreten kann. Im folgenden Code verwenden wir einen Iterator, um auf die Vektorelemente zuzugreifen. 1. Wir erhalten vect1D-Vektoren vom Typ vector aus dem 2D-Vektor vect. 2. Wir erhalten int-Elemente zu x aus dem Vektor vect 1D-Vektor. */div>
class='undefinierte Leerzeichen'> div>
class='undefinierte Leerzeichen'>>for>(vectorintclass='plain'>> vect1D : vect) div>
class='undefinierte Leerzeichen'>>{ div>
class='undefinierte Leerzeichen'>>for>(class='color1bold'>int>x : vect1D) div>
class='undefinierte Leerzeichen'>>{ div>
class='undefinierte Leerzeichen'>>cout<< x <<>' 'class='plain'>; div>
class='undefinierte Leerzeichen'>>} div>
class='undefinierte Leerzeichen'>>cout<< endl; div>
class='undefinierte Leerzeichen'>>} div>
class='undefinierte Leerzeichen'> div>
class='undefinierte Leerzeichen'>>return>0; div>
class='plain'>} div>div>div>>

>

>

Ausgabe

1 2 3 4 5 6 7 8 9>

Zeitkomplexität: O(N*N)

Hilfsraum: O(N*N)

Wie bei Javas Jagged Arrays kann jedes Element eines 2D-Vektors eine unterschiedliche Anzahl von Werten enthalten.

C++




/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Element eins mit 2 Werten darin. */ {1, 2}, /* Element zwei mit 3 Werten darin. */ {4, 5, 6}, /* Element drei mit 4 Werten darin. */ {7, 8, 9, 10} }; /* Jetzt drucken wir den Vektor aus, den wir gerade mithilfe einer einfachen verschachtelten for-Schleife definiert haben. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }>

>

>

Ausgabe

1 2 4 5 6 7 8 9 10>

Übungsproblem: Definieren Sie den 2D-Vektor mit unterschiedlichen Spaltengrößen.
Beispiele:

Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 Input : Number of rows : 3 Number of columns in rows : 3 2 1 Output : 1 2 3 1 2 1>

2D-Vektoren werden oft als Matrix mit darin enthaltenen Zeilen und Spalten behandelt. Unter der Haube sind sie tatsächlich Elemente des 2D-Vektors.
Wir deklarieren zunächst eine ganzzahlige Variable mit dem Namen „row“ und dann ein Array mit dem Namen „column“, das den Wert der Größe jeder Zeile enthält.

Danach initialisieren wir den Speicher jeder Zeile entsprechend der Spaltengröße.

C++




// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , Vektor (M)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

Java erhält die aktuelle Uhrzeit
>

>

Ausgabe

1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>

Ein anderer Ansatz
Angenommen, wir möchten einen 2D-Vektor von initialisieren N Reihen und M Spalten mit dem Wert 0.

C++




>

>

Ausgabe

0 0 0 0 0 0 0 0 0 0 0 0>

Zeitkomplexität: O(N*M)

Hilfsraum: O(N*M)

Noch ein anderer Ansatz:
Angenommen, wir möchten einen 2D-Vektor von erstellen N Reihen und M Spalten und Eingabewerte.

C++




// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , Vektor (M)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

Ausgabe

1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>

Zeitkomplexität: O(N*M)

Hilfsraum: O(N*M)

Wir hoffen, dass Sie diesen Artikel mit einem besseren Verständnis von 2D-Vektoren verlassen und nun sicher genug sind, diese selbst anzuwenden.