如何在for循环中退出(转到父循环的下一个元素)for循环
How to exit (go to next element of parent loop) a for loop inside a for loop
for (int i = 0; i<10; i++)
{
//do some validation for record length
//if it is not valid
continue; // goes to the next iteration in for loop for 'i'
for (int j = 0; j<5; j+=2)
{
//do some more validation for individual record
//if it is not valid
在这里,如果我使用continue
,它应该转到下一个i
。在这里它将进入下一个j
有人能告诉我怎么做吗?
如果在内部循环之后有东西,您需要专门测试外部循环中的标志:
for(some_outer_vars){
bool should_skip = false;
// ...
for(some_inner_vars){
// ...
if(your_condition){
should_skip = true;
break;
}
}
if(should_skip)
continue;
// ...
}
在j
循环中使用break;
将完全退出j
循环。
但至少要花几分钟的时间来决定替代算法、方法或终止条件是否可以消除在循环中间中断的需要。
在内部循环之后有什么内容吗?如果没有,您可以使用break
:
for (i = 0; i < 10; i++)
{
if (i is no good)
continue;
for (j = 0; j < 5; j++)
{
if (j is no good)
break;
}
}
如果以后确实需要执行某些操作,可以将break
与其他标志结合使用。
改为放置break;
。这应该会让你脱离内部循环。
对于(int i=o;i<10;i++({
}
for(int j=0;j<5;j+=2({打破}
"break;"将结束当前的j循环并转到下一个i。
如果不能安排逻辑,使内循环中的break
直接继续外循环,那么执行以下操作:
for (int i = 0; i<10; i++)
{
if (!valid(i)) continue;
for (int j = 0; j<5; j+=2)
{
if (!valid(i,j)) goto continue_i;
do_whatever_with_i_and_j()
}
more_stuff_here();
continue_i:
}
我已经说过了。与设置标志,然后中断,然后立即再次检查标志并有条件地继续的版本相比,代码更短、更简单、更易于阅读和分析。
另一个选择是这个
void inner_loop(int i) {
if (!valid(i)) return;
for (int j = 0; j<5; j+=2)
{
if (!valid(i,j)) return;
do_whatever_with_i_and_j()
}
more_stuff_here();
}
for (int i = 0; i<10; i++)
{
inner_loop(i);
}
然而,根据内部循环的作用,您可能会发现自己构建了一个相当好的机制,让它可以访问它应该修改的内容。
社区维基,因为这(或类似的情况(在so上已经争论了很多次,以至于实际上定义了"主观的和争论的"。
在处理循环时,我尽量避免中断和继续,因为它们很容易被遗漏,如果以后必须重组代码,它们的含义也会改变。您可以使用j=5;当您需要退出内部循环时。如果添加第三个循环或开关,则该行的含义不会改变。有时,您需要在测试i和j的循环中添加if语句,甚至需要添加一个新变量,如bool iIsInvalid,但我认为这会使控制流更容易读取。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么我的for循环不能正确获取argv
- 在基于范围的for循环中使用结构化绑定声明
- 通过for循环使用用户输入填充列表
- 使用for循环检查数组中的重复项
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 正在使用for循环创建QScatterSerie
- Python中的for循环与C++有何不同
- 在更改for循环的第三部分后,未使用for循环结果
- 在 for 循环中查找问题时遇到困难
- 嵌套for循环C++的问题(初学者)
- 如何用for循环在c++中生成单词三角形
- 如何在for循环中包含两个索引值的测试条件
- 带有多个独立参数的C++For循环
- C++ Python 循环"for i, num in enumerate(list):"版本
- C 多循环 for () 基础知识
- 没有条件值的 FOR 循环"for (int i = 1; ; i++)"无法正常工作
- 为用户提供循环for循环的选项
- 打破循环for循环