Cómo cambiar el tamaño vector multidimensional tales como:cambiar el tamaño de vector multidimensional
vector <vector <vector <custom_type> > > array;
Por ejemplo, necesito array [3] [5] [10]?
Cómo cambiar el tamaño vector multidimensional tales como:cambiar el tamaño de vector multidimensional
vector <vector <vector <custom_type> > > array;
Por ejemplo, necesito array [3] [5] [10]?
Debe cambiar el tamaño de todos los vector
s anidados uno por uno. Utilice los bucles for
anidados o la recursividad.
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);
}
}
O 'vector
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 [], ...)
consulta Boost.MultiArray
Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface.
array.resize(3,vector<vector<custom_type> >(5,vector<custom_type>(10)));
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
@ 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
¡oh! ¡mi error! – aniliitb10
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
@qutron: Sí ... así de simple. :-) –
No necesita hacer esto uno por uno. Ver mi respuesta – Matt