在c ++中使用map迭代器时出现问题

时间:2016-04-01 09:30:38

标签: c++ dictionary iterator

我正在尝试查看患者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();

            }

        }

    }

1 个答案:

答案 0 :(得分:0)

我认为这是因为next给出了一个常量迭代器而且itid不是constant ...尝试它的方式与你为{it}做的auto nx尝试相同。 在for循环中auto itid = nx