私は患者IDのマップを調べ、一致するものを見つけて、(同じ患者の)結果の各ペアについて差の二乗を見つけようとしています。しかし、私は "itid = nx; itid!= mymap.end(); itid ++){for" itid "iterator}の問題を抱えています。私が "itid"でコードを取り出すと、うまく動作します。私はプログラミングの初心者ですので、アドバイスをいただければ幸いです!C++のマップイテレータで問題が発生しました
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