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 :

Map dans une structure


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Par défaut Map dans une structure
    Bonjour,

    Je voudrais utiliser une map dans une structure (cf code), mais lorsque j'exécute j'ai une 'segmentation error'. J'imagine que l'objet map n'est pas crée avant le insert mais comme je suis débutant en C++ je vois pas comment le faire. Si qqn a une idée là-dessus....

    Merci de votre aide.

    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
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <map>
    #include <iostream>
     
    using namespace std;
     
    typedef struct plot {
      int num_plot;
      map<int, float> map_1;
      map<int, float> map_2;
    } struct_plot;
     
    typedef struct_plot *pt_plot;
     
    int main(void) {
       pt_plot plot;
       map<int,float>::iterator it;
       plot=((pt_plot)calloc(1,sizeof(struct_plot)));
     
       plot->map_1.insert(std::pair<int,float>(12,300.32));
       for (it=plot->map_1.begin() ; it != plot->map_1.end(); it++ ){
          cout << (*it).first << " => " << (*it).second << "\n";
       }
       return EXIT_SUCCESS;
    }

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par javy35 Voir le message
    std::map
    [...]
    calloc
    [...]
    segmentation error
    Bonjour,
    C'est ce qui arrive quand on fait un hideux mélange de C et C++...

    malloc (ou calloc) sont des fonctions C, qui ont été inventés bien avant le C++ et donc ne sont pas appliquables à des objets C++ comme une map. Il faut que tu utilises des new/delete pour ça, qui allouent la mémoire, comme malloc, mais aussi appelent les constructeurs des objets.

    Au fait, il n'y a plus besoin du typedef pour la struct. En C++, tu peux écrire directement :
    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
    20
    21
    22
    23
     
    #include <vector>
    #include <map>
     
    struct Plot
    {
       int num_plot;
       std::map<int, float> map_1;
       std::map<int, float> map_2;
    };
     
    int main()
    {
       Plot p_stack;
       Plot* p_heap = new Plot;
       Plot p_array_stack[10];
       Plot* p_array_heap = new Plot[10];
     
       std::vector<Plot> p_dynamic_array;
     
       delete p_heap ;
       delete[] p_array_heap; 
    }

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Tu n'appelles jamais le constructeur de ta classe et tu invoques donc des comportements indéfinis.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/08/2014, 10h13
  2. Réponses: 7
    Dernier message: 21/12/2005, 16h44
  3. Enlver un noeud dans une structure XML
    Par Sharingan dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 08h08
  4. donée de plusieur vecteur dans une structure ??
    Par lipczynski dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 08h17
  5. type void* dans une structure
    Par barbapapaz dans le forum C
    Réponses: 3
    Dernier message: 16/07/2004, 16h11

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