Pointeur au vecteur vs vecteur de pointeurs vs pointeur au vecteur de pointeurs

Me demandais ce que vous pensez est la meilleure pratique au sujet de vecteurs en C++.

Si j'ai une classe contenant un vecteur de variable membre.
Quand faut-il le vecteur d'être déclarée:

  1. L'ensemble de l'objet" vecteur membre varaiable contenant des valeurs, c'est à dire vector<MyClass> my_vector;
  2. Pointeur sur un vecteur, j'.e vector<MyClass>* my_vector;
  3. Vecteur de pointeurs, c'est à dire vector<MyClass*> my_vector;
  4. Pointeur de vecteur de pointeurs, c'est à dire vector<MyClass*>* my_vector;

J'ai un exemple précis dans une de mes classes où je suis actuellement a déclaré un vecteur de cas 4, c'est à dire vector<AnotherClass*>* my_vector;
où AnotherClass est une des classes que j'ai créé.

Puis, dans la liste d'initialisation de mon constructeur, je créer le vecteur à l'aide de nouvelles:

MyClass::MyClass()
: my_vector(new vector<AnotherClass*>())
{}

Dans mon destructeur je ne les suivants:

MyClass::~MyClass()
{
  for (int i=my_vector->size(); i>0; i--)
  {
    delete my_vector->at(i-1);
  }
  delete my_vector;
}

Les éléments des vecteurs sont ajoutés dans l'une des méthodes de ma classe.
Je ne sais combien d'objets seront ajoutés à mon vecteur à l'avance. C'est décidé, quand le code s'exécute, basé sur l'analyse d'un fichier xml.

Est-ce une bonne pratique? Ou si le vecteur lieu d'être déclaré comme l'un de l'autre des cas 1, 2 ou 3 ?

Quand utiliser quel cas?

Je sais que les éléments d'un vecteur doit être pointeurs si ils sont des sous-classes d'une autre classe (polymorphisme). Mais doit pointeurs être utilisé dans tous les autres cas ?

Merci beaucoup!!

source d'informationauteur Lisa