For循环 - 当条件计算结果为false时继续

时间:2018-02-22 06:01:09

标签: c++

我用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且循环没有停止。

1 个答案:

答案 0 :(得分:0)

纠正你的for循环,如下所示。很高兴使用括号来指示编译器应该首先执行哪个部分以避免副作用。

 for(int i=0;i<(squares.size());i++){
    for(int k=0;k<(squares[i].size());k++){