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

标签 c algorithm

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

对于我的世界,我想更改很多 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/

相关文章:

c - C 中的指针赋值、malloc() 和 free()

C - 递归数组检查

algorithm - 为什么桶排序在输入排序后运行得更快?

java - 排序算法 - 如何在 main :) 中实现我的类

c - Linux 中的两个不同进程如何调用一个共享库文件?

c - 如何在 Linux 应用程序中获取有关以太网的统计信息?

c - signal_connect 函数中的指针工作不正常

algorithm - 哪种数据结构最适合检查值是否在定义 block 边界的 a 和 b 之间

java - Karger MinCut Java Large Input Error 的 Minimum Cut

algorithm - 在基于平铺 map 的游戏中访问圆形平铺的快速算法