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 :

std::map et probleme d'erase.


Sujet :

SL & STL C++

Vue hybride

Flow_75 std::map et probleme d'erase. 05/07/2007, 14h34
Laurent Gomila Il faudrait voir plus de... 05/07/2007, 14h39
Flow_75 quel code supplémentaire veut... 05/07/2007, 14h42
Flow_75 Re : std::map et probleme d'erase. 05/07/2007, 16h20
Laurent Gomila Oups, j'avais pas vu :oops: ... 05/07/2007, 16h24
frizou11 A ce propos, ça se passe de... 05/07/2007, 14h43
Laurent Gomila erase ou remove, quelque soit... 05/07/2007, 14h55
frizou11 Si je passe un élément en... 05/07/2007, 14h58
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut std::map et probleme d'erase.
    bonjour,

    J'ai un bout de code a vous soumettre.

    J'ai une map (appelons la MAP) qui contient divers elements.

    je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(MAP.find(element a effacer) != MAP.end()) // Verification de l'existence de l'element.
              MAP.erase(element a effacer);
    Le probleme est que au moment du test (apres débuggage), le contenu de la map est correcte dans le sens ou le contenu est coherent.
    Apres le erase, par contre, c'est le chaos dedans.
    Je comprend pas car, au passage suivant dans la fonction. La map MAP est redevenue coherent et sans l'element effacé....

    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Il faudrait voir plus de code, parce que là...

    Quant au test de présence de l'élément, il est inutile (erase ne va pas crasher s'il ne trouve pas l'élément ).

  3. #3
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    quel code supplémentaire veut tu voir ?
    Car je ne vois pas quoi rajouter qui pourrait aider...

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Citation Envoyé par Flob91
    quel code supplémentaire veut tu voir ?
    Car je ne vois pas quoi rajouter qui pourrait aider...

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Oups, j'avais pas vu

    Je sais pas, il faudrait voir un peu plus de contexte, parce que le code que tu donnes est correct tel quel. Si tu es motivé tu peux aussi tenter d'extraire un code minimal complet qui reproduit le problème.

  6. #6
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void DeleteArrow(std::string ArrowToDelete)
    {
     
      if(ArrowMap.find(ArrowToDelete) == ArrowMap.end())
          return;
      else
        ArrowMap.erase(ArrowMap.find(ArrowToDelete));
     
     
    ... suite de traitement ...
     
    // ArrowMap est une std::map<std::string,Arrow>

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut
    Citation Envoyé par Laurent Gomila
    Quant au test de présence de l'élément, il est inutile (erase ne va pas crasher s'il ne trouve pas l'élément ).
    A ce propos, ça se passe de la même manière avec la méthode remove de la classe list ? ou il est nécessaire de tester auparavant si l'élément est bien dans la liste ?

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    erase ou remove, quelque soit le conteneur, ont un comportement parfaitement défini si l'élément n'a pas été trouvé (il faut bien rechercher l'élément avant de le supprimer).

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut
    Citation Envoyé par Laurent Gomila
    erase ou remove, quelque soit le conteneur, ont un comportement parfaitement défini si l'élément n'a pas été trouvé (il faut bien rechercher l'élément avant de le supprimer).
    Si je passe un élément en paramètre d'une fonction qui va supprimer cet élément d'une liste, j'ai le droit du faire direct un remove, ou je dois tester auparavant l'existence de cet élément dans la liste ?

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par frizou11
    Si je passe un élément en paramètre d'une fonction qui va supprimer cet élément d'une liste, j'ai le droit du faire direct un remove, ou je dois tester auparavant l'existence de cet élément dans la liste ?
    Mon message précédent n'était pas clair ?

Discussions similaires

  1. std::map: erase dans une boucle
    Par zenux dans le forum Débuter
    Réponses: 6
    Dernier message: 03/10/2013, 21h48
  2. probleme avec std::map
    Par devdeb91 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/02/2013, 23h52
  3. probleme avec un std::map
    Par Flow_75 dans le forum C++
    Réponses: 3
    Dernier message: 29/07/2008, 21h06
  4. Probleme avec std::map
    Par olive_le_malin dans le forum SL & STL
    Réponses: 14
    Dernier message: 27/02/2007, 09h58
  5. Trier un std::map selon les valeurs plutot que les clés
    Par dj.motte dans le forum SL & STL
    Réponses: 2
    Dernier message: 13/11/2004, 21h54

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