我正在尝试查看患者ID的地图,找到匹配的顺序,并找出每对结果的差异(对于同一患者)。但是我在使用" itid"行中的迭代器," for(itid = nx; itid!= mymap.end(); 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();
}
}
}
答案 0 :(得分:0)
我认为这是因为next
给出了一个常量迭代器而且itid不是constant
...尝试它的方式与你为{it}做的auto nx
尝试相同。
在for循环中auto itid = nx
。