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

C++ Discussion :

multimap initialisation


Sujet :

C++

  1. #1
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut multimap initialisation
    Salut tout le mode.

    J'ai une structure et une string:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typdef struct{
     
      string szName;
      int    iVal1;
      int    iVal2;
     
    }MY_STRUCT;
     
    string szFile;
    j'utilise une multimap pour associer un nom de fichier et une structure de donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multimap<MY_STRUCT, string, less<MY_STRUCT::szName> > m_MULTIMAP;
    Comme vous vous en doutez, cette initialisation est incorrecte. J'aimerais que la multimap trie mes données par rapport à la string szName de la structure MY_STRUCT.

    Comment je dois utiliser ce fameux less?

    PS: Cette définition est correcte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multimap<string, MY_STRUCT, less<string> > m_MULTIMAP;
    mais elle ne m'intéresse pas car elle trie les données par rapport à la string szFile.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typdef struct{
    ...
    }MY_STRUCT;
    C'est du C-beurk ça, en C++ on n'a plus besoin de cette syntaxe verbeuse.

    Ton problème est traité dans la FAQ C++, il suffit de définir un foncteur, ou bien encore l'opérateur < de ta structure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct MY_STRUCT
    {
        bool operator < (const MY_STRUCT& m) const {return szName < m.szName;}
    };
     
    multimap<MY_STRUCT, string> m_MULTIMAP;
    Ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct SortMyStruct
    {
        bool operator ()(const MY_STRUCT& m1, const MY_STRUCT& m2) const
        {
            return m1.szName < m2.szName;
        }
    };
     
    multimap<MY_STRUCT, string, SortMyStruct> m_MULTIMAP;
    Encore une remarque, les noms en majuscule sont habituellement réservés aux macros

  3. #3
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Merci pour cette réponse elle m'a fait gagné un temps précieux et a été beaucoup plus précise et enrichissante que n'importe quel cours ou tutorial.

    Promis lorsque j'aurais le temps j'étudierai en profondeur la STL.

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

Discussions similaires

  1. [Servlet] Fichiers d'initialisation
    Par david71 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/09/2003, 13h47
  2. Créer et initialiser un composant TStatusBar :help:
    Par James_ dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/08/2003, 08h52
  3. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  4. Initialisation de XMLModule
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 10
    Dernier message: 01/04/2003, 10h08
  5. initialisation Directinput avec delphi
    Par Madmaxx dans le forum DirectX
    Réponses: 1
    Dernier message: 21/02/2003, 17h37

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