gpt4 book ai didi

c - "Saving"for循环中的当前状态稍后继续

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:32:02 25 4
gpt4 key购买 nike

目前我正在考虑以下问题,也许有人可以帮助我:

对于我的世界,我想更改很多 block ,为了防止延迟,我只想同时更改几个 block 。要更改长方体,我通常使用这样的循环:

for(int x=t.x; x<t.X; x++) 
for(int y=t.y; y<t.Y; y++)
for(int z=t.z; z<t.Z; z++) {
// ..
}

其中 t 保存起点和终点坐标。

现在我想保存当前进度以便稍后继续。

请帮助我,我已经厌倦了思考它..

最佳答案

您的代码看起来像 C。在 C 中,进程在离开调用函数后无法返回到给定的堆栈状态。所以离开一个循环然后再返回它在语言层面是不可能的。在其他语言中,情况有所不同。例如。在 Python 语言的 Pypy 实现中,continuelets可用于实现您所描述的内容。

但是,您可以通过使用自己的对象来存储最后的计数器来实现类似的方法。

struct counters { int x, y, z; };

bool continueLoops(struct counters *ctrs) {
for (; ctrs->x < t.X; ctrs->x++) {
for (; ctrs->y < t.Y; ctrs->y++) {
for (; ctrs->z < t.Z; ctrs->z++) {
// ..
if (weWantToInterruptTheLoop)
return true;
}
ctrs->z = t.z;
}
ctrs->y = t.y;
}
return false;
}

void startLoops() {
struct counters ctrs;
ctrs.x = t.x;
ctrs.y = t.y;
ctrs.z = t.z;
while (continueLoops(&ctrs)) {
// do whatever you want to do between loops
}
}

但是,与直接在内部循环中执行相关操作相比,我认为上述方法没有太大好处。所以我不确定这对你是否有用。

关于c - "Saving"for循环中的当前状态稍后继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13388748/

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