0

假设我们有bool的二维数组,它们代表简单游戏的地图。如果单元格被某个游戏对象占用(否则为false) ,则数组的每个单元格都可以设置为true 。

我们想在循环中更新关于对象行为的地图。假设(由于某些原因)我们不能只更新地图的某些区域,我们必须迭代数组中的每个单元格,如果对象改变了它的位置,则否定它的值。

我们知道,在每个数组的更新中,只有很少的变化,但数组很大。现在问题来了。什么更优化。

(1) 这个:

for (int i = 0; i < Rows; i++)
    for (int j = 0; j < Cols; j++)
    {
        bool newValue = update(i,j);
        arr[i,j] = arr[i,j] != newValue ? newValue : arr[i,j];
    }

(2) 这个:

for (int i = 0; i < Rows; i++)
    for (int j = 0; j < Cols; j++)
    {
        bool newValue = update(i,j);
        if(newValue != arr[i,j])
            arr[i,j] = newValue;
    }

(3) 或者可能是这样的:

for (int i = 0; i < Rows; i++)
    for (int j = 0; j < Cols; j++)
    {
        arr[i,j] = update(i,j);
    }

我认为(1)是最糟糕的解决方案。所以(2)对(3)。

4

1 回答 1

0

否 3. 没有理由像 #2 中那样编写代码。您可以删除 if 没有任何问题。

于 2012-05-30T23:38:03.597 回答