我知道这些迭代器问题已被问过并回答了一千次,但是当我编译以下代码时,我仍然会收到此错误:
错误C2440:'初始化':无法转换 '的std :: _ Vector_iterator< _Myvec>'到'cv :: Vector< _Tp> *'
void iterate(vector<vector<cv::Point> >& contours){
Vector<Vector<cv::Point>>::iterator it = contours.begin();
for( int i = 0; i< contours.size(); i++ ){
if(contourArea(contours[i])>1000){
it++;
}else{
contours.erase(it);
}
}
}
我认为这段代码没有任何问题。新迭代器的向量的模板类型与我从中获取迭代器的向量相同。
答案 0 :(得分:0)
无法转换错误通常非常直观。通常,使用的类型可以提示您的代码中的某些内容是错误的。
这里我们使用大写的Vector
类来定义迭代器,并为它分配一个小写的Vector
类。
请注意,如果Vector不是真正的类,你可能会遇到不同的错误。