【发布时间】:2019-04-23 18:16:10
【问题描述】:
我的问题解释起来有点复杂。所以我会尽量让自己清楚。我正在研究像 Citymapper 这样的 C++ 应用程序实现。在当前级别,我使用了两个 unordered_map,其中一个嵌套在另一个中,最后是一个对向量。我还有两个 .csv 文件,其中一个是不同的地铁站,一个用于 unorder_map 和其他不同信息的键,另一个包含不同车站之间的连接(出发键、到达键、travel_time)。我指定 compute_travel 计入直接连接的两个站点。我试图从 _start 和 _end 中提取两个站点(从,到)或(_start,uint64 中的_end)之间的 travel_time。我实现了两个函数:compute_travel 和 compute_and_display_travel。第一个提取 travel_time,第二个显示车站之间的移动。
马上就到这里(请原谅我的法语):
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;
}
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;
}
我的代码可以编译,但我的 travel_time 设置为 0,就好像程序没有进入最后一个循环一样(这是不正常的)。我应该得到我的 .csv 文件中的 travel_time。感谢您的帮助。
【问题讨论】:
-
请在此处发布minimal reproducible example 以重现您的问题。
-
...如果cmets携带有价值的信息,请翻译。如果没有,请删除它们。
标签: c++ vector unordered-map