dynamiczna tablica dwuwymiarowa

Odpowiedz Nowy wątek
2006-12-09 17:50
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] ?


A bus station is where a bus stops.
A train station is where a train stops.
On my desk I have a workstation

Pozostało 580 znaków

2006-12-09 19:55
0

Jest dobrze.


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5

Pozostało 580 znaków

2006-12-09 20:08
0
klajter napisał(a)

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

Pozostało 580 znaków

2006-12-09 20:23
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       
}

};

Pozostało 580 znaków

2006-12-09 21:04
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]; };
};

Pozostało 580 znaków

2006-12-11 22:25
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 :)


A bus station is where a bus stops.
A train station is where a train stops.
On my desk I have a workstation

Pozostało 580 znaków

2006-12-12 09:06
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.

Pozostało 580 znaków

2006-12-12 13:09
0

no wlasnie mi chodzi o konretna komorke..


A bus station is where a bus stops.
A train station is where a train stops.
On my desk I have a workstation

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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