2010-11-30 13 views

Respuesta

4

Debe cambiar el tamaño de todos los vector s anidados uno por uno. Utilice los bucles for anidados o la recursividad.

+2

bien, como m_elements .resize (3); para (int i = 0; i <3; i ++) { matriz [i] .resize (5); for (int j = 0; j <5; j ++) { matriz [i] [j] .resize (10); } } – qutron

+0

@qutron: Sí ... así de simple. :-) –

+0

No necesita hacer esto uno por uno. Ver mi respuesta – Matt

4

lo hice))

array.resize(3); 
for (int i = 0; i < 3; i++) 
{ 
    array[i].resize(5); 
    for (int j = 0; j < 5; j++) 
    { 
     array[i][j].resize(10); 
    } 
} 
+1

O 'vector >> array (3, vector > (5, vector (10)));' –

2

me haría un contenedor personalizado que contiene un vector de vectores (de ... por dimensión) y cambiar el tamaño de cambio de tamaño con funciones por dimensión. De esta forma, puede colocar el invariante de igual tamaño por dimensión en un solo lugar. El cambio de tamaño real se puede hacer en un bucle según la dimensión.
Habrá un poco de trabajo involucrado en hacer público lo que se necesita acceder (operador [], ...)

5

consulta Boost.MultiArray

Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface.

8
array.resize(3,vector<vector<custom_type> >(5,vector<custom_type>(10))); 
+0

Necesita aclaración: ¿qué son exactamente 3,5 y 10 aquí? ¿Está cambiando el tamaño de un vec [5] [10] a vec [3] [10]? – aniliitb10

+0

@ aniliitb10 No; este es el ejemplo que solicitó OP (por favor revise la pregunta). 'array' ya es tridimensional. Lo cambia de tamaño de lo que era anteriormente, a 3x5x10. – Matt

+0

¡oh! ¡mi error! – aniliitb10

Cuestiones relacionadas