IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Libérer des pointeurs dans une std::map


Sujet :

SL & STL C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Libérer des pointeurs dans une std::map
    Bonjour,

    J'ai actuellement une map définie ainsi:
    std::map< std::string, CWeapon* > ;
    Qui associe donc à une pointeur sur une arme une chaine d'identification.
    La map est remplie dynamiquement depuis un fichier xml.

    Mais comment libérer les objets CWeapon ?
    Il me faudrait un itérateur, je pense, mais je n'ai pas réussi à les faire fonctionner

    Quelqu'un pourrait-il m'aider ?

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    la chose suivante vide ta map en libérant les CWeapon qu'elle contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void clear(std::map< std::string, CWeapon* > & m)
    {
      std::map< std::string, CWeapon* >::iterator it;
     
      for (it = m.begin(); it != m.end(); it++)
        delete it->second;
     
      m.clear();
    }
    Pour info, si it est un iterateur sur une map, it->first retourne la clef (dans ton cas une string) et it->second la valeur.

    A part cela, tu peux utiliser using pour éviter d'écrire std:: ce qui est quelque peu lassant.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Effectivement, ça parait tout bon.

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Acceder a la fonction membre d'une classe, dans une std::map
    Par student_php dans le forum Débuter
    Réponses: 2
    Dernier message: 10/05/2011, 20h38
  2. Réponses: 7
    Dernier message: 17/01/2009, 13h10
  3. Réponses: 2
    Dernier message: 21/02/2007, 13h28
  4. Vider une std::map de pointeur
    Par Zenol dans le forum SL & STL
    Réponses: 14
    Dernier message: 10/02/2006, 13h16
  5. Inserer des elements dans une map sans rangement ?
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 07/09/2004, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo