Ich verwende die Vektorklasse in der STL-Bibliothek zum ersten Mal. Wie sollte ich zu einer bestimmten Zeile des Vektorarrays hinzufügen?
%Vor%Wenn ich die erste Zeile von v mit dem ersten Zeiger von ganzen Zahlen hinzufügen möchte, könnte ich tun
%Vor% Ist diese Methode in Ordnung, um einen 2D-Vektor des Vektors int
s zu erstellen, in dem jede Zeile möglicherweise eine andere Länge haben könnte (d. h. eine andere Anzahl von Spalten haben könnte)?
Ich bin mir nicht ganz sicher, was das Problem ist, da Ihr Beispielcode mehrere Fehler enthält und nicht wirklich klar macht, was Sie tun möchten. Aber so fügen Sie eine bestimmte Zeile eines 2D-Vektors hinzu:
%Vor%Beantwortet das Ihre Frage? Wenn nicht, könnten Sie versuchen, genauer zu bestimmen, womit Sie Probleme haben?
Wenn Sie die (maximale) Anzahl von Zeilen und Spalten im Voraus kennen, können Sie resize()
operator[]
zu ändern (und darauf zuzugreifen) . Beispiel:
Eine weitere Möglichkeit besteht darin, nur einen Vektor zu verwenden und die ID in mehrere Variablen aufzuteilen, die wie vector[(row * columns) + column]
zugänglich sind.
// initialisiere den 2D Vektor zuerst
vector<vector<int>> matrix;
// initialisiere den 1D-Vektor, den du in die Matrix einfügen möchtest
vector<int> row;
// Initialisierung der Zeile mit Werten
row.push_back(val1);
row.push_back(val2);
// Einfügen von Werten in die Matrix
matrix.push_back(row);
// Ausgabe- [[val1, val2]]
Verwenden Sie einfach die folgenden Methoden, um einen 2D-Vektor zu erstellen.
%Vor%ODER
%Vor%Dadurch wird eine Matrix der Größe rows * columns erstellt und mit Nullen initialisiert, weil wir eine Null (0) als zweites Argument im Konstruktor dh <übergeben stark> Vektor & lt; int & gt; (Spalten, 0) .
Eine weitere Möglichkeit, einen 2D-Vektor zu definieren, besteht darin, einen Vektor von Paaren zu deklarieren.
%Vor%Betrachten Sie für 3-d-Vektoren Tuple und make_tuple.
Ich benutze diesen Code. funktioniert gut für mich. Kopieren Sie es und laufen Sie auf Ihrem Computer. Du wirst es selbst verstehen.
%Vor%Wenn Sie mehr an eleganter Lösung interessiert sind, können Sie VectorEx von hier aus ausprobieren: Ссылка
In VectorEx.h haben Sie bereits eine 2D-Array-Datenstruktur erstellt, die Sie problemlos verwenden können (wie zB std :: vector). Es hat diese Lösung in Low-Level gemacht: std::vector<std::vector<DataType>>
Aus Ihrer Sicht sehen Sie es als vectorex::vector2d<DataType> aArray
;.
Dann, um das 2d-Array zum Beispiel mit 100 Zeilen und 100 Spalten zu erstellen, machen Sie aArray.build(100, 100);
. Es wird das Array aufbauen.
Der zweite große Vorteil ist, dass es mit einer Funktion kommt, die das 2d-Array anzeigen kann, wie Sie Microsoft Excel öffnen und das Array darin anzeigen.
Die Funktion ist vectordisplay::DisplayVector_2d
unter der Datei VectorDisplay.h
Diese Funktion funktioniert unter Windows. getestet auf Windows 7 64 Bit.
Beachten Sie, dass dieses Projekt neu ist und Fehler möglich sind. Funktionsnamen können sich im Laufe der Zeit ändern.
Hier sind Beispiele, wie man das benutzt:
%Vor%Beispiel 2:
%Vor%Beispiel 3:
%Vor%Ich hoffe, Sie fanden es nützlich.
Weitere Informationen und ein Beispiel finden Sie unter Ссылка und Ссылка
HINWEIS: initialize()
wurde in build()
geändert. Ignote die "initialisieren" in den Bildern