wake-up-neo.net

initialisieren eines 2D-Vektors

Was ist der Unterschied zwischen diesen beiden Arten der Deklaration eines 2D-Vektors?.

vector< vector<int>> a(M,N);

und

vector< vector<int>> a(M, vector<int> (N));

Ich habe es versucht, fühle mich aber als erstes leicht verständlich.

18
sad

std::vector Hat einen Füllkonstruktor, der einen Vektor aus n Elementen erzeugt und mit dem angegebenen Wert füllt. a hat den Typ std::vector<std::vector<int>>, was bedeutet, dass es sich um einen Vektor eines Vektors handelt. Daher ist Ihr Standardwert zum Füllen des Vektors ein Vektor selbst, kein int. Daher ist die zweite Option die richtige.

std::vector<std::vector<int>> array_2d(rows, std::vector<int>(cols, 0));

Dadurch wird ein 2D-Array mit Zeilen * Spalten erstellt, bei dem jedes Element den Wert 0 hat. Der Standardwert ist std::vector<int>(cols, 0), was bedeutet, dass jede Zeile einen Vektor mit der cols Anzahl von Elementen hat, die jeweils 0 sind.

40
a_pradhan

Um einen 2D-Vektor zu deklarieren, müssen wir zuerst ein 1D-Array mit einer Größe definieren, die der Anzahl der Zeilen des gewünschten 2D-Vektors entspricht .. _ Lassen Sie uns einen Vektor aus k Zeilen und m Spalten erstellen

 "vector<vector<int>> track(k);"

Dadurch wird ein Vektor der Größe k erstellt. Verwenden Sie dann die Größenänderungsmethode.

for (int i = 0; i < k; i++) {
    track[i].resize(m);

Auf diese Weise können Sie einen 2D-Vektor deklarieren

0
user10636234