我想从std::list
删除一个元素,然后重新指向这个名单,但是当我做这种方式如何在擦除en元素后正确指向std :: list(double for循环)?
for(std::list<CvRect>::iterator it = listOfCvRects.begin(); it != listOfCvRects.end(); it++)
{
for(std::list<CvRect>::iterator jt = listOfCvRects.begin(); jt != listOfCvRects.end(); jt++)
{
if(it == jt)
{ continue;}
if((jt->x) > (it->x) //.. more conditions...)
{
jt = listOfCvRects.erase(jt);
//OR
//listOfCvRects.erase(jt++);
}
}
}
我和未处理的异常:iterator is unincrementable
[可能重复(http://stackoverflow.com/q/596162/624900) – jterrace 2012-01-04 23:01:31
如果条件是对称的,你可以在启动内环'jt = it;'。 – 2012-01-04 23:08:15