我想從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