我用CLion做我的作业。这是我的代码和我遇到的奇怪错误,但我不知道为什么。我希望有人可以告诉我为什么以及如何解决它。
void findDownCorner(vector<vector<Point> >& squares, Point2f corners[]){
Point2f top_left=squares[0][0];
Point2f top_right=squares[0][0];
Point2f down_left=squares[0][0];
Point2f down_right=squares[0][0];
for(int i=0;i<squares.size();i++){
for(int k=0;k<squares[i].size();i++){
if(squares[i][k].x < top_left.x){
top_left=squares[i][k];
}
if(squares[i][k].y < top_right.y){
top_right=squares[i][k];
}
if(squares[i][k].y > down_left.y){
down_left=squares[i][k];
}
if(squares[i][k].x > down_right.x){
down_right=squares[i][k];
}
}
}
corners[0]=top_left;
corners[1]=top_right;
corners[2]=down_left;
corners[3]=down_right;
}
如您所见,正方形的大小为8,但现在i
等于8且循环没有停止。
答案 0 :(得分:0)
纠正你的for循环,如下所示。很高兴使用括号来指示编译器应该首先执行哪个部分以避免副作用。
for(int i=0;i<(squares.size());i++){
for(int k=0;k<(squares[i].size());k++){