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 :

Extraire les informations depuis une unordered_map d'unordered_map


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 15
    Par défaut Extraire les informations depuis une unordered_map d'unordered_map
    Bonjour, mon problème est un peu complexe à expliquer. Alors je vais essayer de me faire le plus clair possible. Je travaille sur une implémentation en C++ d'application comme celle de la RATP. Au niveau actuel, j'utilise deux unordered_maps dont l'une est emboîtée dans l'autre et en toute fin un vecteur de paires.Je dispose aussi de deux fichiers .csv l'un qui les différentes stations de metro, une clé pour unorder_map et différentes autres informations et l'autre qui contient les connexions entre les différentes stations (clé du départ, clé de l'arrivée, travel_time). Je précise que le compute_travel compte pour deux stations en liaison direct. J'essaie de tirer le travel_time entre deux stations (from,to) ou (_start, _end en uint64) à partir de _start et _end. J'ai implémenté deux fonctions : compute_travel et compute_and_display_travel. La première extrait le travel_time et la second affiche le déplacement entre les stations. Mon code compile mais mon travel_time est fixé à 0 comme si le programme n'entrait pas dans la dernière boucle (ce qui n'est pas normal).
    Le voici sans plus tarder :
    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
    28
    29
    30
    31
    32
    //COMPUTE_TRAVEL
     
    vector<pair<uint64_t,uint64_t> > Station_parser:: compute_travel(uint64_t _start, uint64_t _end){
        vector<pair<uint64_t, uint64_t> > vect; //RA1I ?
     
        int travel_time=0; //RA1I 
        for(auto& j:connections_hashmap){
            for(auto&i:(j.second)){//pour chaque noeud de l'unordered_map connections de connections_hashmap
                if ((i.first==_start)&&(i.second==_end)){ //on recherche le couple départ-destination 
                     travel_time=j.first; //on récupère le travel_time de la connection répond au critère
                }
     
     
                else
                    cout<<"Erreur"<<endl;
            }
        }
     
        vect.push_back(make_pair(_start,travel_time));
        return vect;  
    }
     
    //COMPUTE_AND_DISPLAY_TRAVEL
     
    vector<std::pair<uint64_t,uint64_t> > Station_parser::compute_and_display_travel(uint64_t _start, uint64_t _end){
        vector<pair<uint64_t, uint64_t> > vect=compute_travel(_start,_end);
        for(auto &i:vect){
     
             cout << i.first << "," << i.second << endl;
        }
        return vect;
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Qu'est-qui dit le débogueur ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 15
    Par défaut
    Je code sous notepad++ et compile avec un linux bash. J'ai essayé de constituer un projet code::blocks avec mes fichiers mais il ne compile pas.
    J'ai deux fonctions de lecture : read_stations et read_connections. La premiere fonctionne à merveille mais la deuxième a l'air de ne pas fonctionner du tout. J'y ai même mis un affichage en première ligne mais il ne ressort pas quand j'execute mon programme.
    Voici son code :
    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
      void Station_parser::read_connections(const std::string& _filename){
        cout<<"hi"<<endl; //?????????
        ifstream entree(_filename.c_str()); 
        if (entree.fail()){
            cerr<<"Error"<<endl;
        }              
        string from=" ";
        string to=" ";
        string tfr=" ";//travel_time
        while(entree.good()){
            getline(entree,from,',');
            getline(entree,to,',');
            getline(entree,tfr,'\n'); //go to next line
            uint64_t fr=strtoul(from.c_str(),NULL,10);//base 10
            uint64_t t=strtoul(to.c_str(),NULL,10);
            uint64_t tf_time=strtoul(tfr.c_str(),NULL,10);
            connections.insert({fr,t});
            connections_hashmap.insert({tf_time,connections});
        }
        entree.close();
    }
    J'ai utilisé l'opérateur [] pour voir le contenu de l'unordered_map connections ( connections[*clé d'une station*]) mais j'ai 0 à chaque fois.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Il y a tant de manière différentes pour que votre code parte en sucette (non vérification des valeurs de retour, etc...) qu'il n'est pas raisonnable de travailler ce type de code sans un environnement de développement correct.
    Commencez par monter un environnement de développement digne de ce nom, donc avec un débogueur (gdb s'il le faut), et après on voit.
    Arrêtez de travailler comme dans les années 50.

Discussions similaires

  1. [XL-2010] Extraire les données depuis un classeur vers un autre avec une boucle
    Par Pamsu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/03/2019, 12h03
  2. Réponses: 3
    Dernier message: 28/10/2017, 09h47
  3. [Python 2.X] extraire des informations depuis une table html
    Par overider dans le forum Général Python
    Réponses: 0
    Dernier message: 03/07/2014, 14h03
  4. Réponses: 2
    Dernier message: 18/10/2005, 08h05
  5. Extraire les icônes d'une DLL
    Par Globus dans le forum MFC
    Réponses: 6
    Dernier message: 13/09/2002, 13h44

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