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 :

Associer à une clé une série d'informations avec std::map


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Associer à une clé une série d'informations avec std::map
    Bonjour, j'aurai besoin d'aide je débute en c++ et je voudrai savoir si il n'y a pas un outil me permettant de faire quelque chose du genre :

    1 map<int,string,string,string> Eleve;

    Je sais que c'est lignes de codes sont absurdes mais c'est pour vous donner une idée de ce que je veux faire ! En fait j'aimerai asscier a un numéro un série d'information exemple : je rentre : '' ID d'un joueur '' et je peux récupérer : '' nom du joueur'' ''Classement du joueur'' '' heure de connexion du joueur '' etc .... merci d'avance !

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Tu peux faire un std::map< T1, std::pair<T1, T2>>.
    Tu peux aussi faire une structure S1 contenant toutes les informations que tu souhaite pour avoir std::map<T1, S1>.

  3. #3
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    En C++11, std::map<Id, std::tuple<string,string,string>>
    Toutefois il y a possibilité, comme le suggère Neckara une structure simple serait plus appropriée.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Personnellement je conseillerais fortement la structure ne serais-ce que pour clarifier la nature des données et donc avoir un code plus lisible (et donc plus fiable car qui dit code difficilement lisible dit boulettes et donc bugs!)
    Par ailleurs en avançant en conception tu trouveras peut-être bien des services pertinents à associer à ce qui n'est pour l'instant qu'un "paquet de données"

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par therwald Voir le message
    Personnellement je conseillerais fortement la structure ne serais-ce que pour clarifier la nature des données et donc avoir un code plus lisible (et donc plus fiable car qui dit code difficilement lisible dit boulettes et donc bugs!)
    Par ailleurs en avançant en conception tu trouveras peut-être bien des services pertinents à associer à ce qui n'est pour l'instant qu'un "paquet de données"
    +1!

    De manière générale, il est particulièrement rare de devoir utiliser des pair ou des tuples "tels quelles".

    C'est peut etre utile dans certaines circonstances, je n'en disconvient pas, mais tres certainement pas dans n'importe quelle circonstance.

    Lorsque tu ne sais pas encore quel type sera représenté par les différentes valeurs, par exemple, mais que tu sais comment tu devra manipuler la première, la deuxième et les suivantes afin d'obtenir une résultat cohérent, ces classes te permettront de n'avoir pas à te poser la question de savoir "mais quel nom porte cette donnée?":

    En utilisant une pair, tu sauras d'office que la première donnée sera nommée first et la deuxième sera nommée second, en utilisant la tuple, tu sauras que tu peux accéder à la Nieme donnée en utilisant la fonction get, et cela sera sans doute pour le mieux.

    Mais si tu sors de cette optique générique, que tu sais parfaitement quel donnée sera regroupée dans ta structure, quel nom tu donneras à chacune des données et comment tu les manipuleras ensemble afin d'obtenir des comportements cohérents, tu as très largement intérêt à définir ta propre structure, avec des membres / champs clairement nommés et identifiés.

    Cela te facilitera énormément la tâche par la suite
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par therwald Voir le message
    Personnellement je conseillerais fortement la structure ne serais-ce que pour clarifier la nature des données et donc avoir un code plus lisible (et donc plus fiable car qui dit code difficilement lisible dit boulettes et donc bugs!)
    Par ailleurs en avançant en conception tu trouveras peut-être bien des services pertinents à associer à ce qui n'est pour l'instant qu'un "paquet de données"
    Tout a fait d'accord.

    Une autre alternative, peu claire sauf si ca a un sens precis dans le context en question, serait d'utiliser une multi map. http://en.cppreference.com/w/cpp/container/multimap

    Mon experience avec multimap est un peu desastreuse a cause de sont interface de pourrie, mais si c'est juste pour aglomerer specifiquement un groupe de string, alors ca peut peut peut etre marcher.

    Cela dis, une structure sera plus claire, comme dit au dessus, et meme un vecteur de string serait moins problematique a manipuler.

  7. #7
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Ça me semble un gros détournement d’utiliser multimap pour ça…

    Multimap, c’est pour stocker des valeurs ordonnées selon une clé, la clé n’étant pas unique, non ? En tout cas, c’est comme ça que je m’en sers (cas typique : cache d’objet avec date d’expiration).

  8. #8
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    Ça me semble un gros détournement d’utiliser multimap pour ça…

    Multimap, c’est pour stocker des valeurs ordonnées selon une clé, la clé n’étant pas unique, non ? En tout cas, c’est comme ça que je m’en sers (cas typique : cache d’objet avec date d’expiration).
    Tu as raison j'avais pas lu la derniere phrase du premier poste, clairement il faut une classe/struct avec les infos claire dedans.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. Réponses: 2
    Dernier message: 09/06/2011, 08h49
  3. [XL-2007] copier des lignes d'une feuille à une autre et appliquer des filtres avec VBA
    Par Malek713 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/11/2010, 19h46
  4. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 13h22
  5. Réponses: 2
    Dernier message: 22/05/2009, 23h00

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