1 votos

Crear un array de arrays 2D

Si escribo lo siguiente en C++

uint8_t empty[2][2] = {{0,0},{0,0}};

y luego intento crear un array de esos arrays vacíos,

uint8_t empty[][2][2] = {empty, empty, empty};

Recibo la advertencia de que

error: el array debe inicializarse con un inicializador entre llaves

entonces ¿cómo podría inicializar un array de arrays de 2 dimensiones?

0voto

kuroi neko Puntos 3902

Si es necesario:

#define EMPTY {{0,0},{0,0}}
uint8_t empty[][2][2] = {EMPTY, EMPTY, EMPTY};

Sin embargo, acumular matrices en bruto hará que tu código sea un desorden en poco tiempo, si me preguntas.

Es mejor encapsular tu matriz en una clase, para que los llamantes puedan tener una descripción funcional de lo que pretendes hacer con ella en lugar de lidiar con los detalles de su implementación.

0voto

Puedes declarar las variables como punteros y asignar la memoria dinámicamente.

uint8_t **empty = new uint8_t*[2];
empty[0] = new uint8_t[2];
empty[1] = new uint8_t[2];

uint8_t ***Empty = new uint8_t**[3];
int i, j;

for (i = 0; i < 2; i++)
    for (j = 0; j < 2; j++)
        empty[i][j] = 0;

for (i = 0; i < 3; i++)
{
    *(Empty + i) = empty;
}

// realizar algún trabajo

// eliminar la memoria asignada
delete []empty[0];
delete []empty[1];
delete []empty;
delete []Empty;

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X