Quelle est la bonne manière de libérer un vecteur std :: de pointeurs en C ++?

J'ai cherché sur StackOverflow, mais ne pouvait pas trouver la réponse à cette question.

Supposons que j'ai un std::vector<Day *> vector_day - c'est - un vecteur de pointeurs sur des Day objet. Maintenant, je push_back à vector_day de nombreux éléments:

vector_day.push_back(new Day(12));
vector_day.push_back(new Day(99));
vector_day.push_back(new Day(71));
...

Maintenant à un certain point, je n'ai plus besoin vector_day. Quelle est la bonne façon de libérer la mémoire?

Il ce la bonne façon:

for (std::vector<Day *>::iterator i = vector_day.begin(); i != vector_day.end(); ++i) {
    delete *i;
}

N'est-ce pas invalider le vecteur pour chaque suppression? Je suis très confus.

source d'informationauteur bodacydo