La suppression de vecteur de pointeurs

J'ai besoin de créer des pointeurs d'instances d'une classe, et le programme ne sais pas au moment de la compilation combien de pointeurs, je vais créer.
Pour la suppression, j'envisage de stocker des pointeurs dans un vecteur, puis de les supprimer un par un.
L'utilisation des pointeurs intelligents d'une façon plus propre à y aller ?
Et si l'on ne veut pas utiliser des pointeurs intelligents, serait-ce l'utilisation de vecteur être considérée comme propre ?

Code Minimum:

#include <vector>
using namespace std;

class Foo {
public:
    Foo();
};
Foo::Foo(){}
void createFooVector(int nb, std::vector<Foo*> &v){
    for(int i=0;i<nb;i++){
        Foo* f = new Foo();
        v.push_back(f);
    }
}
int main(int argc, char *argv[]){
    std::vector<Foo*> v;
    createFooVector(5,v); 
    while (!v.empty()){
        Foo* f = v.back();
        v.pop_back();
        delete f;
    }
}
Avez-vous vraiment besoin d'un conteneur de pointeurs? Ne pouvez-vous pas stocker vos Foo objets de valeurs (std::vector<Foo>)? Aussi, ne serait-il pas plus clair si createFooVector renvoyé un nouveau vecteur plutôt que de modifier celui qui est donné comme argument?
Je utiliser le pointeur pour cette raison: stackoverflow.com/questions/15471193/... ... ce ne pouvait pas être vu dans le code que je montre ici, essayé de rester minime

OriginalL'auteur Vince | 2013-04-11