2012-03-21 13 views
10

Quindi, sto cercando di creare un vettore 3x3x2 tridimensionale, utilizzando la lib di vettore e salvando il numero 4 in ogni nodo.Cercando di creare un vettore tridimensionale in C++

Questo è quello che im cercando:

vector<vector<vector<int> > > vec (5,vector <int>(3,vector <int>(2,4))); 

per un 5x8 dimensionale bi salvare l'int 6 in ogni nodo, questo funziona:

vector<vector<int> > vec (5,vector <int>(8,6)); 
+0

Un vettore 3D è qualcosa di simile <-1, -2, 4>. Stai parlando di un array 3D (simulato usando un vettore di vettori di vettori). Un vettore è un array 1D, indipendentemente dal numero di dimensioni che ha. – Kaz

+3

Si prega di non farlo. Usa 'boost :: multi_array'. –

+0

@KarlKnechtel L'uso di Boost potrebbe non essere appropriato per tutte le persone, a causa di limitazioni della licenza o dell'impronta di build. –

risposta

21

È quasi azzeccato - il secondo nidificato vector dovrebbe essere vector<vector<int> >, non solo un vector<int>:

vector<vector<vector<int> > > vec (5,vector<vector<int> >(3,vector <int>(2,4))); 
+0

ahh, capisco perché. Grazie = D – Mete

5

Inoltre è possibile dichiarare di queste forme:

// first form 
typedef vector<int> v1d; 
typedef vector<v1d> v2d; 
typedef vector<v2d> v3d; 
v3d v(5, v2d(3, v1d(2, 4))); 

// second form 
vector<vector<vector<int> > > v = vector<vector<vector<int> > >(5, vector<vector<int> >(3, vector<int>(2, 4))) 
Problemi correlati