为什么我的阵列无法正常工作以及如何修复它

时间:2019-09-15 03:49:53

标签: c++ visual-studio-2015 openframeworks

我正在使用的代码可以创建一个10 x 10的对象块,这些对象稍后将在程序中绘制。我希望程序在两行中跳过对象8和9的x和y值。

如果将代码稍作修改以表示If(Skip [0] == i),它会完美运行,但仅适用于一个值,这需要重复,这是我试图通过设置来避免的阵列。我对编码不是很了解,所以请尽量简化。

不起作用


int Skip[2] = { 8, 9 };

            for (int j = 0; j <= 10 - 1; j++) {
                for (int i = 0; i <= 10 - 1; i++) {

                    for (int m = 0; m <= 1; m++) {
                        if (i == Skip[m]) {
                            continue;
                        }
                    }

                    x[i][j] = 0 + i * 50;
                    y[i][j] = 0 + j * 50;
                }
            }

可以工作

int Skip[2] = { 8, 9 };

            for (int j = 0; j <= 10 - 1; j++) {
                for (int i = 0; i <= 10 - 1; i++) {

                        if (i == Skip[0]) {
                            continue;
                        }

                    x[i][j] = 0 + i * 50;
                    y[i][j] = 0 + j * 50;
                }
            }

2 个答案:

答案 0 :(得分:2)

在不起作用的示例中,continue适用于m上的循环。整个循环是精心设计的无操作-绝对没有效果。

在工作示例中,continue适用于i上的循环,并且具有提前中止该迭代并跳至下一个迭代的作用。

答案 1 :(得分:1)

要添加到@Igor's answer,请将continue更改为break,以中断内部循环,但继续外部循环。它应该具有您想要的效果:

for (int j = 0; j <= 10 - 1; j++) {
    for (int i = 0; i <= 10 - 1; i++) {

        for (int m = 0; m <= 1; m++) {
            if (i == Skip[m]) {
                 // This breaks the m loop, but continues the i loop
                 break;
            }
        }

        x[i][j] = 0 + i * 50;
        y[i][j] = 0 + j * 50
    }
}