在vector中用迭代器删除元素会用到erase()函数。这个函数返回的是删除当前元素后下一个元素的指针,也就是说在删除元素后,指针指向删除元素后面的那个,具体用法参考下面代码。
vector<uchar>::iterator itIn = inliers.begin();
vector<DMatch>::iterator itM = matches.begin();
for (itIn = inliers.begin(), itM = matches.begin(); itIn != inliers.end(); ++itIn)
{
if (*itIn)
{
itM = matches.erase(itM);//将已符合RANSAC的匹配都删去,并将指针指向下一个元素
}
else
++itM;
}