为什么我在此代码中收到Vector iterator is not incrementable
错误?
for (vector<vector<Point>>::iterator it = contours.begin(); it != contours.end(); ++it) {
if (contourArea(*it) < 50) {
it = contours.erase(it);
}
}
我看到的其他答案通过指定.erase()
返回it
的迭代器来解决此错误,但我仍然得到相同的错误。怎么了?
答案 0 :(得分:4)
您的代码有两个问题:
erase
,则会遇到问题(导致未定义的行为)。以下是您应该使用的内容:
for (vector<vector<Point>>::iterator it = contours.begin(); it != contours.end(); ) {
if (contourArea(*it) < 50) {
it = contours.erase(it);
}
else {
++it;
}
}