博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 退出双层for循环,解决 break、return、continue无法实现问题
阅读量:7042 次
发布时间:2019-06-28

本文共 1189 字,大约阅读时间需要 3 分钟。

遇到一个情景,采用双层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、

2、

 

因, 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. }  

 

转载于:https://www.cnblogs.com/luorende/p/7554805.html

你可能感兴趣的文章
***如何优雅的选择字体(font-family)
查看>>
11.python并发入门(part12 初识协程)
查看>>
华为NE40 V800 XPL功能初体验
查看>>
thinkphp3.1随机取数据库中几条记录
查看>>
设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,
查看>>
ORA-01652 even though there is sufficient space in RECYCLE BIN
查看>>
Could not use /usr/local/apache/logs/slowquery.log for logging (error 13).
查看>>
mogilefs-企业级分布式存储应用与实战
查看>>
nginx改tengine,gitlab重装操作步骤
查看>>
spring中的相互引用问题
查看>>
sql server2005 jdbc解决自动增长列统一处理问题
查看>>
GLUT and OpenGL Utility Libraries
查看>>
虚拟机安装oracle RAC
查看>>
socket client deamon
查看>>
docker images 保存导入导出、容器导入导出
查看>>
OpenSSH后门获取root密码
查看>>
说说sftp的chroot
查看>>
Network File System
查看>>
Java导致登录UCS Manager异常
查看>>
获取的一个网页木马分析
查看>>