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 :

utilisation des std::map


Sujet :

SL & STL C++

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Par défaut utilisation des std::map
    Bonjour,
    j'utilise des std::map pour gérer une liste de chaîne de caractères.

    Voilà la déclaration de ma liste:

    std::map<std::string,std::string> VEprobeslist;

    Ensuite, je fabrique un itérateur pour pouvoir parcourir cette liste:

    std::map<std::string,std::string>::iterator itProbes;

    Je réalise ensuite des opérations sur la liste.

    Je n'ai aucun problème à la compilation mais lorsque je lance l'exécution, il ne fait aucune opération sur la liste et l'appli crash.

    C'est comme si ma map n'avait pas été allouée, alors que, il me semble, aucune allocation n'a besoin d'être réalisée pour les liste de type map.

    Je tourne un peu en rond, si quelqu'un pouvait m'aider.

    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Poste un code minimaliste et complet qui met en évidence le problème.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Par défaut
    Voilà le code complet de ma fonction qui utilise ma map sachant qu'elle est déclarée dans mon fichier d'en-tête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    std::map<std::string,std::string>::iterator itProbes;
     
    		//VEprobeslist.begin();
    		int verif=VEprobeslist.size();
    		itProbes = VEprobeslist.find(strprobename);
     
    		if(itProbes != VEprobeslist.end())
    			return VWRCI_ERROR_INVALID_PARAMETERS;
     
    		itProbes = VPprobeslist.find(strprobename);
    		if(itProbes != VPprobeslist.end())
    			return VWRCI_ERROR_INVALID_PARAMETERS;
     
    		if(strprobename.substr(0,2)=="VE")
    			VEprobeslist[strprobename]=strprobename;
    		else if (strprobename.substr(0,2)=="VP")
    				VPprobeslist[strprobename]=strprobename;
     
    		return VWRCI_RET_OK;

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    et ça plante où exactement ?



  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Ton code ne me parait pas être un code minimaliste mais complet qui permette de reproduire le problème à coup sûr.

    Autrement, pour tester la présence d'un élement (vu que tu ne fais que ça), tu peux utiliser count() sur une map ou un set (non multi_).

    Sinon, un std::set t'aurait suffit non ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Par défaut
    Luc Hermitte a dit:

    Sinon, un std::set t'aurait suffit non ?

    J'aurais pu et je pourrais utiliser autre chose qu'une map mais je n'aime pas trop changer de structure surtout quand je ne comprends pas pourquoi cela ne fonctionne pas

    Rigobert a dit:

    et ça plante où exactement ?

    Ca plante lors du premier appel d'une méthode associée à ma map. C'est-à-dire ici, à la fonction size().

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Ta map est très certainement corrompue avant ton appel. D'où notre demande d'avoir un EMC.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Par défaut
    Luc Hermitte a dit:

    Ta map est très certainement corrompue avant ton appel

    Je ne comprends pas comment ma map pourrait être corrompue alors qu'avant le code que j'ai posté, je ne fais qu'une simple déclaration de celle-ci.

    Qu'est-ce que EMC signifie?????

  9. #9
    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
    Exemple Minimal Complet.

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    En tout cas sur le bout de code posté, je ne vois rien qui saute aux yeux...

    Essaie vraiment de reposter qq chose de petit, qui compile et ... qui plante !

Discussions similaires

  1. Réponses: 18
    Dernier message: 19/08/2011, 16h21
  2. Réponses: 0
    Dernier message: 10/11/2010, 15h10
  3. Copier des std::map
    Par Rodrigue dans le forum SL & STL
    Réponses: 2
    Dernier message: 06/02/2007, 20h07
  4. 3 précisions sur l'utilisation des "std::vector"
    Par Invité dans le forum SL & STL
    Réponses: 9
    Dernier message: 10/01/2006, 00h42
  5. Libérer des pointeurs dans une std::map
    Par GaldorSP dans le forum SL & STL
    Réponses: 2
    Dernier message: 09/07/2005, 14h42

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