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 ?
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++
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];
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)
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]...
Dzięki mistrze! Potrzebowałem tego, pozdrawiam chłopaki!