2016-07-13 7 views
-1

Extracting and storing all 6x6 postitions from multiple resampled 6x6 matrices in an array in RVektor < vector<int>> mit 6x6 Dimension Implementierung

bekam ich meine Antwort von hier. How to create a 2D vector where in like 2D array

+0

Haben Sie das überhaupt probiert? – SirGuy

+0

Ja, Sie [können] (https://ideone.com/Pb9KoE), aber es könnte besser sein, einen 1D-Vektor zu deklarieren: 'vector arr (36);' und auf seine Elemente zuzugreifen, die den richtigen Index berechnen: 'arr [i * 6 + j] 'anstelle von 'arr [i] [j]'. –

+0

'@RadouaneROUFID' Danke .. Obwohl ich 'Multidimensional Vector' nicht verstanden habe .so bitte werden Sie einen besseren Weg bieten, um alle Zweifel auszuräumen. – CLIX159

Antwort

1

Sie haben zwei Alternativen. Vektor von Vektoren oder ein einzelner Vektor (siehe @Bob __'s Kommentar).

Der Vorteil des Vektorenvektors ist C++ - Güte (Iteratorgrenzenprüfung usw.). Der Nachteil ist eine höhere Kosten für Konstruktion/Kopie. rows+1 Vektoren müssen konstruiert (oder kopiert) werden.

Der Vorteil des einzelnen Vektors der Zeilen * Spaltengröße besteht darin, dass Sie nur eine Vektorkonstruktion benötigen (oder bei Bedarf kopieren). (Ein weiterer Leistungsvorteil ist die Cache-Lokalität der Daten.)

So können Sie die [row] [col] -Syntax beibehalten.

const int rows = 6; 
const int cols = 6; 
vector<int> x(rows*cols); 

//enable using [row][col] syntax 
auto a_int = reinterpret_cast<int (*)[rows]>(x.data()); 
// cout << a_int[row][col] << '\n'; 
+0

[link] (http://stackoverflow.com/questions/823562/multi-dimensional-vector) _answer dieser Frage ist auf diesem Link ... – CLIX159