zoukankan      html  css  js  c++  java
  • C++ 退出双层for循环,解决 break、return、continue无法实现问题

    遇到一个情景,采用双层for循环 遍历图像的像素,当找到某一个像素点满足条件时,退出双层for 循环 。

    首先了解一下 continue、break、return 各自功能用法:

    1.continue 语句的作用

          终止本次循环的执行,即跳过当前一次循环中continue语句后尚未执行的语句,然后进行下一次循环条件的判断。
    2.break 语句的作用
        (1)当break在循环体内时,强行终止整个循环的执行,即结束整个循环过程,不再判断执行循环的条件是否成立,直接转向循环体下面的语句。
        (2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。
    'break' 用在循环语句块中, 只要执行到break语句, Matlab就会退出该循环, 但是它只能退出一层循环, 假如现在有内外两层循环, 在内层循环中执行break只会退出内层的循环.
    break常和判断语句一起是使用.
    3.return 语句的作用
         ( 1 ) return 从当前的方法中退出,返回到调用该方法的语句处,继续向下执行。
         ( 2 ) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。
         ( 3 ) return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于中断函数执行,返回调用函数处。

    其它参考: 

    1、Java中break return continue 区别

    2、break,continue,return的区别

    因, break,无法跳出双层循环,

    2个解决方案:

    1、 将双层for循环 写到一个子函数里面,然后用return 进行返回,退出子函数 。

    2、双层for循环不是单独的一个子函数,而是在一个主函数中,还有其它函数,此时用return,会导致整个函数结束,此时可以对双层for循环的两个变量进行同时赋值来终止双层for循环,注意,不能只将外层赋值终止值,否则会报错,因为内层还没有循环完毕,而外层已经超出范围,所以务必现将子循环变量终止后,再终止外循环变量。 代码如下:

     
    1. for (int i = 0; i < img.rows;i++){  
    2.  for (int j = 0; j < img.cols;j++){  
    3.   int elesum = rgb.at<Vec4b>(i, j)[0] + rgb.at<Vec4b>(i, j)[1] + rgb.at<Vec4b>(i, j)[2];  
    4.   if (elesum> 0)  
    5.   {  
    6.     i = img.rows;  j = img.cols; // 跳出双层 循环 赋值方式终止两个变量  
    7.     cout << "i: " << i << endl;  
    8.     cout << "j: " << j << endl;  
    9.     cout << endl;  
    10.       //break;  
    11.   }  
    12.  }  
    13. }  



  • 相关阅读:
    (Good Bye 2019) Codeforces 1270B Interesting Subarray
    (Good Bye 2019) Codeforces 1270A Card Game
    Codeforces 1283D Christmas Trees(BFS)
    Codeforces 1283C Friends and Gifts
    Codeforces 1283B Candies Division
    1095 Cars on Campus (30)
    1080 Graduate Admission (30)
    1099 Build A Binary Search Tree (30)
    1018 Public Bike Management (30)
    1087 All Roads Lead to Rome (30)
  • 原文地址:https://www.cnblogs.com/luorende/p/7554805.html
Copyright © 2011-2022 走看看