每次调用一个函数时如何在循环中迭代一次?

阿米尔·雷扎·里亚希(Amir reza Riahi)

我有循环,并且每次调用该函数都要迭代一次。这是我的代码:

#include <iostream>

void iter(int max_i, int max_j){

        static int i = 0;
        static int j = 0;
        for (; i< max_i; i++ ){
                for(; i<max_j; j++){
                        std::cout << i << " " << j << std::endl;
                        return;
                }
        }
}


int main(){

        iter(4,4);
        iter(4,4);
        iter(4,4);
        return 0;

}

但是结果表明,每次调用该函数时,它都从零开始。

amirreza@time:/tmp$ g++ iterate.cpp 
amirreza@time:/tmp$ ./a.out 
0 0
0 0
0 0
贾罗德42

从您的代码,它应该是

void iter(int max_i, int max_j){
    static int i = 0;
    static int j = 0;

    if (i < max_i)
    {
        std::cout << i << " " << j << std::endl;
        if (++j >= max_j) {
            ++i;
            j = 0;
        }
    }
}

演示版

最好将所有这些变量放在类中,以避免可能会出现问题的静态变量。就像是:

truct IterData
{
    const int max_i;
    const int max_j;
    int i = 0;
    int j = 0;
};

bool iter(IterData& data){
    std::cout << data.i << " " << data.j << std::endl;
    if (++data.j >= data.max_j) {
        ++data.i;
        data.j = 0;
    }
    return data.i < data.max_i;
}

int main()
{
    IterData data{4, 4};

    while (iter(data));
}

演示版

C ++ 20具有协同例程,可以最自然地编写循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在一个循环中,如何在语句为真时执行一次,然后在再次为真时再次执行一次?

如何在另一次迭代中使用一个循环的输出?

如何在第一次和每次重试时执行一个方法?

在纯JavaScript中选择任意div后,如何在每次单击时一次单击循环中的nextElementSibling项目?

在for循环中,条件中使用的变量是在每次迭代还是仅在第一次迭代时都被检查?

遍历两个列表时,如何在一次迭代后停止内部循环?

如何让 for 循环输出一次而不是每次迭代?

如何在Python中的无限循环中每X次仅调用一次函数?

如何在Javascript循环中每N次迭代睡眠一次?

def 函数在每个 (while) 循环中重复两次,即使我每次只调用它们一次

如何在每次循环迭代中更新一次 React 状态

Propel:如何在一个循环中一次从数据库中检索所有元素?

如何在无限循环中一次显示一个容器中的数组对象?

在while循环中单击按钮时,如何进行下一次迭代?

如何在PowerShell foreach循环中重复一次迭代?

如何在循环中更改条件,但仅在第一次迭代之后?

如何在下一次迭代之前在JavaScript循环中添加延迟?

如何在for循环中的下一次迭代之前等待承诺解决

如何在循环中仅显示div一次,并且在div内部仅显示一次的下一个div显示

如何在 For 循环中返回一个 Promise 函数?

Python:当一个键有n个值时,如何在for循环中迭代dict的每个元素

如何分配一个循环来为每个核心运行一次迭代

如何在 C 中创建连续循环,其中循环的每次迭代在其内部的循环的每次迭代中发生一次

如何在 for 循环中使用多处理并行化对同一个函数的两次调用,并使用不同的参数?

在每次迭代时从重复组中捕获一个值(而不是最后一次出现)

在Angular中,我从* ngFor循环调用一个函数,当整个循环只应运行一次时,它将运行两次

每次快速调用一个函数时,如何自动添加一个新按钮?

R中的N+1循环-如何在循环的下一次迭代中使用第一个循环输出

在循环的合格比较中使用随机参数时,它是一次还是每次循环运行时调用一次随机函数?