Pointer do 3-wym. array

0

Cześć.
Piszę klasę zawierającą funkcję, która tworzy 3-wymiarowy array o określonych rozmiarach.
Obecnie mam problem ponieważ nie wiem w jaki sposób utworzyć pointer do 3-wymiarowego array'a.
Pointer do 3-wymiarowego array'a jest mi potrzebny, aby móc przepuścić go przez funkcję.
Proszę o pomoc.

0
<typ twojej tablicy> ***p_3d_tab;
0

Czy możesz napisać dokładniej w jaki sposób utworzyć pointer do 3d array?
Najlepiej na jakimś przykładzie.

0
void func( int ***tab );

int ***tab = new int**[10];
for( int i = 0; i < 10; i++ ) {
 tab[i] = new int*[10];
 for( int o = 0; o < 10; o++ )
  tab[i][o] = new int[10];
}

func(tab);

for( int i = 0; i < 10; i++ ) {
 for( int o = 0; o < 10; o++ )
  delete [] tab[i][o];
 delete [] tab[i];
}

delete [] tab;
0

Dziękuję za pomoc.
Byłem na bust, na pewno będę z niego korzystać.
Mam kolejny problem.
Dlaczego poniższa klasa się zawiesza gdy jej użuwam?
Podejrzewam, że chodzi o metodę mesh_grid.

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>
#include <string>
#include <vector>

using namespace std;

//klasa dekompozuje przestrzeń
typedef float (*Mesh)[1000][1000][1000];

class discritizer {
private:
float *iter_x, *iter_y, *iter_z;
int *size_x, *size_y, *size_z;
double Ixyz[3];
const int i,j,k;
float A[3];
public:
float u;
int l_x;
int l_y;
int l_z;
double Num_elem;
double discrete();
double knot_handle();
double num_elements()
{
return (Num_elem = l_x
l_y
l_z);
}
Mesh mesh_grid();
discritizer(float iterX, float iterY, float iterZ, int sizeX, int sizeY, int sizeZ);
~discritizer();
};

double *discritizer::discrete()
{
double l_x = *size_x/ *iter_x;
double l_y = *size_y/ *iter_y;
double l_z = *size_z/ *iter_z;
double *Ixyz = new double[3] = {l_x, l_y, l_y};
return (Ixyz);
}

double *discritizer::knot_handle()
{
double A = new double[3] = {i iter_x, j iter_y, k *iter_z};
return A;
}

Mesh discritizer::mesh_grid()
{

Mesh D;
int i,j,k;
for(k=0; k<l_z; k++) {
for(j=0; j<l_y; j++) {
for(i=0; i<l_x; i++) {
(*D)[i][j][k] = u; }}}
return D;
}

discritizer::discritizer(float iterX, float iterY, float iterZ, int sizeX, int sizeY, int sizeZ)
{
iter_x = new float;
iter_y = new float;
iter_z = new float;
size_x = new int;
size_y = new int;
size_z = new int;
*iter_x = iterX;
*iter_y = iterY;
*iter_z = iterZ;
*size_x = sizeX;
*size_y = sizeY;
*size_z = sizeZ;
}

discritizer::~discritizer() {
delete iter_x;
delete iter_y;
delete iter_z;
delete size_x;
delete size_y;
delete size_x;
}

0

a po co dynamicznie tworzysz wartości??

0

Faktycznie, może dynamiczne tworzenie wartości nie jest tu potrzebne ale czy to coś zmieni?

dynamiczne tworzenie wartości miało się przydać póżniej

0

a jak tego używasz??

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