Usuwanie z tablicy obiektów.

Usuwanie z tablicy obiektów.
KO
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Witam

Mam problem, otóż ma klasę abstrakcyjną Zbior oraz klasę od niej dziedziczącą o nazwie Element.
Mam tablicę Zbior *tablica_obiektow[10]. Obiekty klasy Element tworzę w ten sposób, tablica_obiektow[i] = new Element().
Obiekty usuwam poprzez delete tablica_obiektow[i]. Mam metodę wyświetl, którą wyświetla pewne dane przechowywane w obiekcie klasy Element.

Problem pojawia się gdy np. mam 5 obiektów w tablic_obiektow, usunę obiekt z indeksem 2, i gdy w pętli chcę wyświetlić dane to wyświetlą się tylko, które były przed usuniętym obiektem. Jak to ominąć?

Czy jest możliwość w takiej sytuacji użycia inteligentnych wskaźników?

edytowany 1x, ostatnio: Komptronic
byku_guzio
już pierwsze zdanie budzi wątpliwości. Nie sądzę, żeby element był rodzajem zbioru - dziedziczenie tu po prostu nie pasuje
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Tu potrzebny jest inteligentny programista a nie wskaźnik. Albo nie używaj tablicy tylko vector<> albo przenoś elementy. Najprościej zamienić usuwany element z ostatnim a potem "skrócić" tablicę.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
KO
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

A gdybym tak, usuwał obiekt poprzez delete tablica_obiektow[i], a później przypisywał wartość, tablica_obiektow[i] = 0. A w momencie wyświetlania sprawdzałbym czy nie jest zerem. Ma to sens?

Loganek
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 8 lat
  • Postów:268
0

tracisz co prawda wtedy 4 bajty, ale zyskujesz na czasie. W niektórych przypadkach może to być dobre rozwiązanie.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.