Poznaj C++ w$ godziny0228

Poznaj C++ w$ godziny0228



Tablice 219

W książce omówimy* tablice wskaźników, tablice tworzone na stercie i kilka innych wariantów. Inne, bardziej zaawansowane struktury, potrafiące przechować duże ilości danych przekraczają poziom tej książki. Pamiętaj, że w programowaniu obowiązują dwie zasady: zawsze pozostaje coś czego się trzeba jeszcze nauczyć i zawsze są książki, z których się tego można nauczyć.

Tablice wskaźników

Wszystkie omawiane dotychczas tablice były tworzone na stosie. Jednak stos ma dosyć ograniczoną pojemność w stosunku do np. sterty. Można każdy obiekt zadeklarować na stercie, a w tablicy przechowywać jedynie wskaźniki do tych obiektów. Takie rozwiązanie w ogromnym stopniu redukuje pamięć zajmowaną na stosie. Listing 15.4. to modyfikacja listingu 15.2. Teraz wszystkie obiekty będą przechowywane na stercie. Rozmiar tablicy możemy, bez problemu, zwiększyć z 5 do 500 (dla przyzwoitości zmieniamy również nazwę tablicy z Młode na Rodzina).

Listing 15.4. Tablica wskaźników do obiektów

1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

11:

12:

13:

14:

15:

16:

17:

18:

19:

20:

21:

22:

23:

24:

25:

26:

27:

28:

29:

30:

31:

32:

33:

34:


// Listing 15.4 - Tablica wskaźników do obiektów

finclude <iostream.h>

class KOT

{

public:

KOTO 1 jegoWiek = 1; jegoWaga=5; )    // konstruktor domycelny

-KOTO {}    // destruktor

int PobierzWiekO const { return jegoWiek; } int PobierzWagaO const { return jegoWaga; } void UstawWiek(int wiek) { jegoWiek = wiek; }

private:

int jegoWiek; int jegoWaga;

>;

int main()

1

KOT * Rodzina[500]; int i;

KOT * pKot;

, for (i = 0; i < 500; i++)

1

pKot = new KOT; pKot->UstawWiek(2*i +1); Rodzina[i] = pKot;


for (i = 0; i < 500; i++)

cout « "Kot #" « (i+1) « ": " « Rodzina[i]-**>PobierzWiek () « endl; return 0;

}

W książce omówimy* tablice wskaźników, tablice tworzone na stercie i kilka innych wariantów. Inne, bardziej zaawansowane struktury, potrafiące przechować duże ilości danych przekraczają poziom tej książki. Pamiętaj, że w programowaniu obowiązują dwie zasady: zawsze pozostaje coś czego się trzeba jeszcze nauczyć i zawsze są książki, z których się tego można nauczyć.

Tablice wskaźników

Wszystkie omawiane dotychczas tablice były tworzone na stosie. Jednak stos ma dosyć ograniczoną pojemność w stosunku do np. sterty. Można każdy obiekt zadeklarować na stercie, a w tablicy przechowywać jedynie wskaźniki do tych obiektów. Takie rozwiązanie w ogromnym stopniu redukuje pamięć zajmowaną na stosie. Listing 15.4. to modyfikacja listingu 15.2. Teraz wszystkie obiekty będą przechowywane na stercie. Rozmiar tablicy możemy, bez problemu, zwiększyć z 5 do 500 (dla przyzwoitości zmieniamy również nazwę tablicy z Młode na Rodzina).

Listing 15.4. Tablica wskaźników do obiektów

1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

11:

12:

13:

14:

15:

16:

17:

18:

19:

20:

21:

22:

23:

24:

25:

26:

27:

28:

29:

30:

31:

32:

33:

34:


// Listing 15.4 - Tablica wskaźników do obiektów #include <iostream.h>

class KOT

{

public:

KOT() 1 jegoWiek = 1; jegoWaga=5; }    // konstruktor domycelny

-KOT()(1    // destruktor

int PobierzWiek () const { return jegoWiek; ) int PobierzWagaO const ( return jegoWaga; ) void UstawWiek(int wiek) { jegoWiek = wiek; }

private:

int jegoWiek; int jegoWaga;

};

int niain ()

{

KOT * Rodzina{500] ; int i;

KOT * pKot;

for (i = 0; i < 500; i++)

{

pKot = new KOT; pKot->UstawWiek(2*i +1); Rodzina[i] = pKot;


}

for (i = 0; i < 500; i++)

cout « "Kot #" « (i+1) «    " « Rodzina[i]-

>»>PobierzWiek () « endl; return 0;

1


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0230 Tablice 221Wskaźnik do tablicy a tablica wskaźników Rozpatrzmy trzy różne
Poznaj C++ w$ godziny0232 Tablice 223Usuwanie tablicy ze sterty Rodzina jest wskaźnikiem do tablicy
Poznaj C++ w$ godziny0222 Tablice 213 Tablice
Poznaj C++ w$ godziny0226 Tablice 217 Jednak taka reprezentacja mniej przystaje do rzeczywistości ni
Poznaj C++ w$ godziny0234 Tablice 225 Żeby rozwiązać powstałe problemy, musimy wykorzystać specjalną
Poznaj C++ w$ godziny0236 Tablice 227 jEFEKT DZIAŁANIA: Lancuchl: Nikt nie jest sam Lancuch2: Nikt n
Poznaj C++ w$ godziny0103 Proste klasy 89 W tym miejscu należy zwrócić uwagę na dwie ważne rzeczy: □
Poznaj C++ w$ godziny0119 Zaawansowane sterowanie programem 107Pętle while Pętla while pozwala na po
Poznaj C++ w$ godziny0237 228 Godzina 15 Nazwa tablicy to stały wskaźnik na pierwszy element tej tab
Poznaj C++ w$ godziny0221 212 Godzina 15Rysunek 15.1 Deklarowanie tablicy *— 4 bajty —► 100 bajtów
Poznaj C++ w$ godziny0224 215 TabliceTablice obiektów Każdy obiekt, niezależnie czy jest on standard
Poznaj C++ w$ godziny0227 218 Godzina 15 9:    cout « Tablic*[i] [j]« andl; 10:  
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
Poznaj C++ w$ godziny0137 IIIZarządzanie pamięcią Godzina 9 Wskaźniki 10    Zaawansow
Poznaj C++ w$ godziny0139 128 Godzina 9 Stop. Przeczytaj tę definicję jeszcze raz. Wskaźnik jest zmi
Poznaj C++ w$ godziny0140 Wskaźniki 129 Wskaźniki 129 13 14 15 16 17 18 cout « "longVar: "

więcej podobnych podstron