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 :

Question sur std::map


Sujet :

SL & STL C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut Question sur std::map
    Bonjour à tous,

    Je souhaite créer un objet map dont le type des clés est une chaîne de caractères (char*) et le type des éléments à stocker est une liste de doubles.
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<char*,std::queue<double>> mon_map;
    Le problème est que quand j'insère un nouvel élément dans ce map, au lieu de comparer la valeur des deux chaînes de caractères, il compare plutôt l'adresse mémoire des deux chaînes ! Du coup, le code suivant donne lieu à deux insertion dans la même position du map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::map<char*,std::queue<double>>mon_map;
    char* ma_chaine=new char[10];
    sprintf(ma_chaine,"dix");
    mon_map[ma_chaine].push(10);
    sprintf(ma_chaine,"trente"); // ici ma_chaine change de valeur mais pas d'adresse mémoire
    mon_map[ma_chaine].push(30); // l'insertion se fait pourtant dans la file d'attente de la chaine "dix"
    Quelqu'un aurait une idée de comment résoudre le problème?

    D'avance merci !

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    utilise des std::string à la place des char*. Rappel: un char* est un pointeur sur char et pas un type chaine. Donc le compilo, utilise la valeur pointeur comme clé et pas sa signification chaîne de caractère.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut
    Parfait !
    Merci beaucoup

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

Discussions similaires

  1. Question sur les Map-backed ActionForms
    Par RifDev dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/09/2008, 18h46
  2. Pb de link sur std::map
    Par escafr dans le forum SL & STL
    Réponses: 2
    Dernier message: 02/05/2008, 11h39
  3. Encore une question sur std::cout
    Par tnarol dans le forum SL & STL
    Réponses: 2
    Dernier message: 01/04/2008, 10h10
  4. Question sur std::vector
    Par FabaCoeur dans le forum SL & STL
    Réponses: 11
    Dernier message: 24/06/2007, 18h22
  5. Questions sur les Map
    Par djobanaille dans le forum C++
    Réponses: 3
    Dernier message: 12/12/2005, 09h41

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