Jak wyczyścić takie coś:
vector<Klasa*> kontener;
potem dodaje obiekty:
Klasa *k1;
kontener.push_back(k1);
jak zwolnić pamięć przy zakończeniu programu z tego wektora?
dodanie znaczników <code class="cpp"> - fp
Jak wyczyścić takie coś:
vector<Klasa*> kontener;
potem dodaje obiekty:
Klasa *k1;
kontener.push_back(k1);
jak zwolnić pamięć przy zakończeniu programu z tego wektora?
dodanie znaczników <code class="cpp"> - fp
for(int i=0;i<kontener.count();i++)
{
delete kontener[i];
}
kontener.clear();
Zwolnić każdy element?
Wektor zostanie sam usunięty.
Zamiast zwykłych wskaźników użyj std::unique_ptr<Klasa>
- gdy z wektora usuniesz taki wskaźnik (lub gdy wektor wyjdzie ze scope'a i zostanie zniszczony) pamięć zostanie automatycznie wyczyszczona.
Wersja 1: to samo co napisał AlfaLeporis tylko z iteratorami
Wersja 2: użyć boost::ptr_vector itp: http://www.boost.org/doc/libs/1_51_0/libs/ptr_container/doc/ptr_container.html