Biblioteka stl, lista obiektów

0

Witajcie :-)

Mam problem z następującym zagadnieniem. Mam stworzyć symulację obrazującą model Lotki-Volterry (model drapieżnik-ofiara). Deklaruję sobie klasę gatunek, w której mam pola czas i dl_zyc. dl_zyc jest zrandomizowana w konstruktorze. I jeszcze w tej klasie jest procedura inkrementująca czas, dajmy na to zegar_biol().

Potem w module głównym tworzę listę obiektów klasy gatunek wykorzystującą bibliotekę stl. Oczywiście wymagane biblioteki są już dołączone.


class gatunek
{
public:
	int czas;					//aktualny czas życiowy
	int dl_zyc;				       //długość życia

	gatunek(){czas=0; dl_zyc=1000+1000*Random();}

	~gatunek(){}

	void zegar_biol(){czas++;}
};


list<gatunek>G  //tworzę listę obiektów typu gatunek

for(int i=0;i<10;i++)     //tworzę nowe obiekty na końcu listy
    G.push_back(gatunek());

Ostatecznie chciałem stworzyć dwie klasy potomne: drapieżnik oraz ofiara, listy tych obiektów. Wszystko chciałem przedstawić na wykresie (tu akurat mam już gotowe biblioteki, więc problemu nie będzie). Zostaje to jednak pokrzyżowane poprzez moją nieumiejętność posługiwania się listami stl. Ten kawałek kodu, który napisalem wyżej działa niby poprawnie, bo na wykresie jest odpowiednia wielkość tablicy (to też już umiem - G.size() zwraca ilość elementów tablicy). Jak w pętli symulacji dam G.push_back(gatunek()), to wielkość listy się będzie zwiększać. Czyli to niby jest ok.

Nie wiem, jak wywołać procedurę zegar_biol() dla wszystkich elementów listy. Nie może to być procedura typu static. Dalej - nie wiem, jak wykorzystać procedurę przypisaną do listy, a mianowicie G.remove_if(), bo chcę usuwać te obiekty z listy, których wartość czas jest większa od dl_zyc.

Proszę o pomoc.

Pozdrawiam.

0

w takim wypadku w kontenerze MUSI być wskaźnik do obiektu.

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