Jak zrobic dynamiczną tablice wielowymiarową

0

Witam jak utworzyć dynamiczna tablice trójwymiarową?Wiem że tablica dynamiczna dwuwymiarowa składa się z tablicy wskażników do tablic , ale jak jest z kolejnymi wymiarami ?

1

Wtedy masz 2 warstwy wskaźników, dopiero trzecia warstwa jest tablicą wartości :) Dla kolejnych wymiarów dodajesz kolejne warstwy wskaźników

int dimX = 100; int dimY = 100; int dimZ = 100;
int*** array;    // 3D array definition;
// begin memory allocation
array = new int**[dimX];
for(int x = 0; x < dimX; ++x) {
    array[x] = new int*[dimY];
    for(int y = 0; y < dimY; ++y) {
        array[x][y] = new int[dimZ];
        for(int z = 0; z < dimZ; ++z) { // initialize the values to whatever you want the default to be
            array[x][y][z] = 0;
        }
    }
}

Przykład z http://stackoverflow.com/questions/2178909/how-to-initialize-3d-array-in-c
Nie podałeś języka, założyłem C++

0
int ***tab;
size_t sizeX, sizeY, sizeZ;

...

tab = new int**[sizeX];

for( size_t i = 0; i < sizeX; ++i )
{
	tab[i] = new int*[sizeY];
	
	for( size_t j = 0; j < sizeY; ++j )
		tab[i][j] = new int[sizeZ];
}
	

Możesz też zrobić tablicę jednowymiarową o odpowiednim rozmiarze i obliczać indeks, np.

int *tab;
size_t sizeX, sizeY, sizeZ;

...

tab = new int[sizeX * sizeY * sizeZ];

i odnosisz się do x, y, z tak

int el = tab[x + y * sizeX + z * sizeX * sizeY];
0

Dzięki .Mam jeszcze pytanie jak przesłać dynamiczną tablice dwuwymiarową do funkcji i każdy jej element podnieść do kwadratu ? Deklaracja funkcji tak powinna wyglądać
void pot(int tab[],int wysokosc,int szerokosc)

0

1.Tak samo jak każdą tablicę
2.Dla jednowymiarowej wyglądałoby to tak: for(int i=0;i<n;i++)tab[i]*=tab[i];
Dla dwuwymiarowej wygląda to tak samo, tylko że zmiast [x], masz [x][y]...

0

Dzięki mistrze! Potrzebowałem tego, pozdrawiam chłopaki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1