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 |
>
>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'>> |
>
>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 |
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 |
>
>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.