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ć.
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).
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()
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;
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ć.
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).
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