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

Langage C++ Discussion :

C++ - Remplissage et Affichage d'une map<int, Point, Point>


Sujet :

Langage C++

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 41
    Par défaut C++ - Remplissage et Affichage d'une map<int, Point, Point>
    Bonjour,

    Je vais commencer par vous exposer mon problème.
    J'ai deux classes : PipingModel et Point. Je souhaite remplir une map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map<int, set<pair<Point,Point>>> mapPipePoint;
    Où le "int" est l'id du pipe associé aux deux Points.

    Pour cela je dispose d'un vector de la forme vector<tuple<idPipe, idPoint1, idPoint2>> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<tuple<int,int,int>> vectorIdPipePoint;
    Ce vector me donne donc les id des deux points associés à chaque pipe.

    Or je dispose aussi des vectors suivants dans ma classe PipingModel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vector<double> coordXVect;
    vector<double> coordYVect;
    vector<double> coordZVect;
    qui me donne les coordonnées X, Y, Z pour un point : par exemple, si je veux les coordonnées de mon premier point je fais coordXVect[0] pour x, etc..

    Le constructeur de ma classe Point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyPoint::MyPoint(int id, int x, int y, int z) : idPoint(id), coordX(x), coordY(y), coordZ(z)
    {
    }
    Pour remplir ma map (avec des Objets Point du coup), j'ai procéder de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void PipingModel::FillMapPipePoint() // Problème avec cette méthode 
    {
        int j=0;
        for (auto t = vectorIdPipePoint.begin(); t != vectorIdPipePoint.end(); ++t)
        {
    	mapPipePoint[get<0>(*t)].insert(make_pair(Point(get<1>(*t), coordXVect[j], coordYVect[j], coordZVect[j]), Point(get<2>(*t), coordXVect[j+1], coordYVect[j+1], coordZVect[j+1])));
    	j++;
        }
    }
    L'erreur que le programme me sort :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C2784: 'bool std::operator <(const std::move_iterator<_RanIt> &,const std::move_iterator<_RanIt2> &)'*: impossible de déduire l'argument modèle pour 'const std::move_iterator<_RanIt> &' à partir de 'const Point'
    J'ai fais pas mal de recherche pour résoudre mon problème, j'ai essayer de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool operator< (const MyPoint& left, const MyPoint& right) {};
    Mais mon problème persiste et je ne vois pas à quel endroit les Point sont comparés à l'aide de "<".

    Je ne souhaite pas que l'on me donne une réponse toute faite mais que l'on m'explique si possible mon erreur.

    Merci d'avance pour vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    set est une collection ordonnée, à chaque ajout d'élément c'est l'opérateur < qui est utilisé pour l'ordre.
    Idem pour map et la clé.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    Si tu n'as pas besoin que tes éléments soient triés, choisis un conteneur autre que set, un conteneur non ordonné comme vector par exemple.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    ou alors la unordered_map de C++11.

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par leternel Voir le message
    ou alors la unordered_map de C++11.
    Certes, elle ne demande pas de tri, mais elle demande une fonction de hash (et une comparaison d'égalité), ce qui est généralement plus complexe à fournir...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 41
    Par défaut
    Je vous remercie pour toutes vos réponses.
    En effet, j'ai enlever le "set" puisque je ne cherche pas à trier.
    Du coup, le mot clé "insert" n'a plus de sens.
    Je cherche à remplir une map de paire de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map<int, pair<MyPoint,MyPoint>> mapPipePoint
    Connaisssez-vous une alternative à "insert" ? Ou pouvez-vous m'indiquer une méthode pour remplir ma map autrement ?

    Merci d'avance pour vos réponses

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 41
    Par défaut
    Je viens de résoudre mon problème par un simple "=" à la place de "insert" !
    Merci à tous pour votre aide

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

Discussions similaires

  1. Affichage d'une Map Geotools
    Par bigben206 dans le forum SIG : Système d'information Géographique
    Réponses: 0
    Dernier message: 08/06/2012, 16h56
  2. Affichage d'une map avec bundle
    Par alen22 dans le forum Plateformes réactives et architectures modulaires
    Réponses: 2
    Dernier message: 08/01/2012, 18h05
  3. Problème ordre d'affichage dans une map.
    Par imen1986 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 20/04/2010, 16h01
  4. gestion et affichage d'une map
    Par Captainjuju dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 04/04/2006, 23h43

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