c++ - 我可以在 C++ 中使用 “for … else” 循环吗?

标签 c++ loops for-loop

<分区>

我是 C++ 新手。有什么办法可以使用“for...else”方法吗? 我来自 python 背景,有一个方法叫做 for...else 循环

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print( n, 'equals', x, '*', n/x)
            break
    else:
        # loop fell through without finding a factor
        print(n, 'is a prime number')

C++ 中有没有类似于 Python 中的“for...else”循环的过程?

最佳答案

不,在 C++ 中没有什么等同于 Python 的 for-else。

有几种方法可以转换函数。我将使用一个更简单的示例:

for i in range(a, b):
    if condition(i):
        break
else:
    not_found()

最接近的转换可以使用goto来实现,但是你可能会发现有些同事可能会反对(因为goto是“邪恶的”和可怕的):

for (int i = a; i < b; i++) {
    if (condition(i)) {
        goto found;
    }
}
not_found();
found:;

在 Python 中也可以使用的其他替代方法是引入一个额外的 bool 变量和 if:

bool found = false;
for (int i = a; i < b; i++) {
    if (condition(i)) {
        found = true;
        break;
    }
}
if (!found) {
   not_found();
}

或者将整个事情封装在一个函数中,我认为这是 Python 和 C++ 中最广泛接受的替代方法。

void function()
{
    for (int i = a; i < b; i++) {
        if (condition(i)) {
            return;
        }
    }
    not_found();
}

关于c++ - 我可以在 C++ 中使用 “for … else” 循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67862242/

相关文章:

javascript - 帮助将数组循环到现有 div 中

Python嵌套循环和更新集

javascript - JS循环遍历数组时的位置

java - 从列表中提取文件名

c++ - 程序不会使用模块、加法和减法进行编译

c++ - 数组衰减到指针和重载解析

c++ - 按键删除链表中的节点,c++

c++ - 在 C++ 中获取工厂类的用户输入

Python:查找字典的key[value]与其他值的差异并返回差异最小的id

javascript - 在 Object.keys() 上使用 for..in 打印错误的键