Wie implementiert man ein 2D Vektor Array?

10

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)? ​​

    
John Smith 14.03.2012, 01:48
quelle

8 Antworten

48

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?

    
Moritz 14.03.2012 02:57
quelle
25

Wenn Sie die (maximale) Anzahl von Zeilen und Spalten im Voraus kennen, können Sie resize() einen Vektor von Vektoren zu initialisieren und dann Elemente mit operator[] zu ändern (und darauf zuzugreifen) . Beispiel:

%Vor%

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.

    
Roi Danton 27.06.2015 15:08
quelle
4
  

// 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]]

    
Madhurya Gandi 11.02.2017 06:15
quelle
4

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

    
Aditya Goel 06.07.2016 14:39
quelle
2

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.

    
Varun Garg 13.03.2016 18:14
quelle
2

Wir können Vektor einfach als 2d-Array verwenden. Zu diesem Zweck verwenden wir die Methode resize (). Der folgende Code kann hilfreich sein, um dieses Problem zu verstehen.

Codeausschnitt:

%Vor%     
rashedcs 04.07.2017 13:27
quelle
1

Ich benutze diesen Code. funktioniert gut für mich. Kopieren Sie es und laufen Sie auf Ihrem Computer. Du wirst es selbst verstehen.

%Vor%     
Ridowan Ahmed 26.05.2016 06:12
quelle
0

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

    
gil123 26.04.2016 07:46
quelle

Tags und Links