【发布时间】:2016-04-01 09:30:37
【问题描述】:
我正在尝试浏览我的患者 ID 地图,找到匹配的连续 ID,并找到每对结果的差异平方(对于同一患者)。但是,我在“for (itid = nx; itid != mymap.end(); itid++) {” 行中的“itid”迭代器遇到了一些问题,我不知道为什么。当我用“itid”取出代码时,它工作得很好。我是一个编程初学者,所以任何建议将不胜感激!
map <int,struct testInfo> mymap;
map <int,struct testInfo>:: iterator it;
pair<map<int,struct testInfo>::iterator,bool> ret;
map <int,struct testInfo>:: iterator itid;
int arraySize = 10000;
double diffsq[arraySize];
int count = 1;
for ( it=mymap.begin() ; it != mymap.end(); it++ ) {
auto nx = next(it);
//comparing each patientID to the next patientID
if ((it->second.patientID == nx->second.patientID) && it->second.patientID != 0) {
for (itid = nx; itid != mymap.end(); itid++) {
if ((it->second.patientID == itid->second.patientID) && it->second.patientID != 0) {
diffsq[count] = pow((it->second.result - itid->second.result), 2);
count++;
} else
itid = mymap.end();
}
}
}
【问题讨论】:
-
nx初始化后,nx可能是结束迭代器,但你不去检查。 -
int 在 map
中代表什么? -
我怀疑“一些麻烦”是由
itid = mymap.end();引起的(与以下itid++的组合不好)。为什么这条线存在? -
嗨 molbdnilo,非常感谢!我认为我的意图是摆脱“for”循环……但显然我没有考虑清楚。我把它改成了 else break;
-
指定“一些麻烦”。
标签: c++ dictionary iterator