dynamiczna tablica dwuwymiarowa

0

witam, mam takie pytanko dotyczace tablicy 2wymiarowej wlasnie.
Tworze ja tak:

(float **ma)
i=y;					//tworzenie macierzy 
ma=new float*[y];			//o nowych rozmiarach
while(i--) ma[i]=new float[x];

i teraz chce ja usunac wiec robie tak:

i=y;
while(i--) delete [] ma[i];		// usuniecie tablicy tymczasowej
delete [] ma;

i moje pytanie: czy dobrze ja usuwam? bo nigdzie tego nie znalazlem a mam pewne watpliwosci czy to dobrze robie..

i jeszcze moze przy okazji takie pytanko:
czy da sie przeciazyc operator[] zeby mozna go bylo uzywac tak: obiekt[m][n] ?

0

Jest dobrze.

0
klajter napisał(a)

czy da sie przeciazyc operator[] zeby mozna go bylo uzywac tak: obiekt[m][n] ?
Nic nie musisz przeciążać, po prostu 'ma[m][n]'.

0

Odnośnie operatora obj[m][n] to da sie to zrobić, ale klasa musi mieć odpowiednią budowę np:

class kolumna {
private:
int* tab;

 public:

//cos tam

    int operator[](int kol)
    {
       //costam
    }

};

class wiersz {
private:
kolumna* tab;

public:

//cos tam

kolumna& operator[](int wiersz)
{
  //cos tam       
}

};

0

Jeśli mowa o klasach, to raczej coś takiego:

class Tablica
{
private:
   float** ma;
   int rx;
   int ry;
public:
   Tablica(int x, int y): rx(x), ry(y) { ma=new float*[y]; while(y--) ma[y]=new float[x]; };
   ~Tablica() { while(ry--) delete [] ma[ry]; delete [] ma; };
   float* operator[](int kol) { return ma[kol]; };
};
0
adf88 napisał(a)

Jeśli mowa o klasach, to raczej coś takiego:(..)

troszke nie zrozumiales chyba, chodzi o takie wywoalnie operatora [], jak wywoluje sie go dla tablicy dwuwymiarowej, np:
obiekt[1][2]; // powinien zwracac wartosc z tablicy zawartej w mojej klasie..

inC15, dzieki, ciekawy pomysl :)

0

Zauważ, że w mojej kolasie wywołując pierwszy operator [] odnosisz się do całego wiersza jako wskaźnika do zwykłej tablicy jednowymiarowej. Oczywiście drugi operator [] to już konkretna komórka.

0

no wlasnie mi chodzi o konretna komorke..

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