Partage
  • Partager sur Facebook
  • Partager sur Twitter

vector<Pointeur> vec

Suppression

Sujet résolu
    15 mai 2008 à 8:12:36

    Hi all,

    J'ai un vecteur déclaré ainsi:

    vector<Objet*> vec;
    


    Je voudrais supprimer un élément du vecteur. Je me sers donc de erase:

    vec.erase(vec.begin() + i);
    


    i étant l'index de la position de l'objet à supprimer. Seulement, le vecteur contient des pointeurs d'objets, faut-il donc désallouer la mémoire soi-même ? delete vec[i]; ?

    Car je sais qu'à la fin de l'utilisation d'un vecteur, il faut bien le faire pour tous les éléments, mais dans ce cas, vector ne s'occupe-t-il pas de la destruction ?

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2008 à 8:47:40

      Si tu as alloué via new, il faut faire des delete. Le vector ne s'en occupe pas. Il détruit l'objet contenu, donc le ppointeur, pas l'objet pointé.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        15 mai 2008 à 11:49:59

        Okay merci.
        Donc je fais

        delete vec[i];
        // Puis
        vec.erase(vec.begin() + i);
        


        Sachant que je veux supprimer cet élément indexé sur i seulement, pas tout le tableau.
        • Partager sur Facebook
        • Partager sur Twitter

        vector<Pointeur> vec

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown