gpt4 book ai didi

c - C 中嵌套且可扩展的 for 循环

转载 作者:太空狗 更新时间:2023-10-29 15:21:46 25 4
gpt4 key购买 nike

我正在编写一个 C 程序,我在其中操作嵌套的 for 循环,一个在另一个循环中,如下所示:

for(i[0] = 0; i[0] < n[0]; i[0]++)
for(i[1] = 0; i[1] < n[1]; i[1]++)
for(i[2] = 0; i[2] < n[2]; i[2]++)
{
do_lot_of_work(i, n, 3);
}

如您所见,上面的代码具有三个嵌套的for 循环。在我的程序中,它占 3 个维度。但是,我想让我的程序可扩展,可以根据用户的意愿即时考虑任意数量的维度;即对于 4 个维度,我希望有四个嵌套的 for 循环,并以 do_lot_of_work(i,n,4) 的形式进行工作。同样,对于任意数量的维度。

我的问题是:如何使上述 for 循环的嵌套可扩展?

请注意,为了达到目的,我愿意牺牲内部的for循环,但希望保留第一个for循环,以便使我的程序与 OpenMP 并行。

最佳答案

当编译时不知道嵌套层次时,使用递归达到同样的效果:

void do_work(int i[], int n[], int pos, int size) {
if (pos == size) {
// All i-s are set - we are ready to roll
do_lot_of_work(i, n, size);
} else {
for (i[pos] = 0 ; i[pos] < n[pos] ; i[pos]++) {
do_work(i, n, pos+1, size);
}
}
}

关于c - C 中嵌套且可扩展的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com