2012-03-21 36 views
10

Por lo tanto, estoy tratando de crear un vector tridimensional de 5x3x2, usando el vector lib y guardando el número 4 en cada nodo.Intentando crear un vector tridimensional en C++

Eso es lo que estoy tratando:

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

dimensiones para un ahorro de la int 6 en cada nodo 5x8 bi, esto funciona:

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

Un vector 3D es algo así como <-1, -2, 4>. Estás hablando de una matriz 3D (simulada usando un vector de vectores de vectores). Un vector es una matriz 1D, independientemente de la cantidad de dimensiones que tenga. – Kaz

+3

Por favor, no hagas esto. Use 'boost :: multi_array'. –

+0

@KarlKnechtel El uso de Boost puede no ser apropiado para todas las personas, debido a restricciones de licencia o espacio de construcción. –

Respuesta

21

Casi lo hizo bien - el segundo anidado vector debe ser vector<vector<int> >, no sólo un vector<int>:

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

ahh, ya veo por qué. Gracias = D – Mete

5

También puede declarar de esta forma:

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