gpt4 book ai didi

C++ 我可以用 1 个循环替换嵌套循环吗

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:33 25 4
gpt4 key购买 nike

所以我一直在尝试做一些代码简化,主要是因为我不太喜欢嵌套 For 循环,但是我在尝试简化下面的代码时遇到了麻烦。代码运行得非常好并且按预期运行(下面的代码被精简了!)。

int fill{200}, wid{600}, hei{400};
for (int w{ 0 }; w < fill; w++) {
for (int h{ 0 }; h < hei; h++) {
int offset{ w + h * (wid + fill) }
//Offset is used to traverse a 1d array "fill" amount of times.
/*Before:
000000
000000
000000
000000
After:
110000
110000
110000
110000*/
}
}

我试图用少 1 个循环来重现相同的输出,但我要么没有得到正确的结果,要么我超出了数组范围。所以我想知道可以做到吗?

最佳答案

我不确定我是否会推荐它,但为了科学......你去吧。它给了我确定。这个想法很简单。您可以通过乘法将两个数字合二为一,然后通过除法和取模检索它们。

请记住一定不要在乘法时溢出。我还会留下一张纸条,我没有检查是否正确选择了所有类型。例如,仅此一项 int offset{ w + h * (wid + fill) }; 就向我举起了旗帜。所以下面的代码主要用于数学/方法。

#include <iostream>
#include <vector>
using namespace std;

int main() {
std::vector<int> loop1, loop2;
int fill{200}, wid{600}, hei{400};

for (int w{ 0 }; w < fill; w++) {
for (int h{ 0 }; h < hei; h++) {
int offset{ w + h * (wid + fill) };
loop1.push_back(offset);
}
}

for (int i{ 0 }; i < fill*hei; i++) {
int w = i / hei;
int h = i % hei;
int offset{ w + h * (wid + fill) };
loop2.push_back(offset);
}

if (loop2 == loop1) cout << "OK\n";
else cout << "NOT OK\n";
return 0;
}

关于C++ 我可以用 1 个循环替换嵌套循环吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476823/

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