Czyszczenie pamięci wektorów dynamicznych obiektów

0

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

0
for(int i=0;i<kontener.count();i++)
{
    delete kontener[i];
}
kontener.clear();
0

Zwolnić każdy element?
Wektor zostanie sam usunięty.

1

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.

2

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

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