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; }
Partager