0

シンプルなゲームのマップを表すboolの2 次元配列があるとします。セルがゲームのオブジェクトによって占有されている場合、配列のすべてのセルをtrueに設定できます (そうでない場合はfalse )。

オブジェクトの動作に関して、マップをループで更新したいと考えています。(いくつかの理由により) マップの一部の領域のみを更新できないとしましょう。配列内のすべてのセルを反復処理し、オブジェクトの位置が変更された場合はその値を無効にする必要があります。

配列の更新ごとに変更が少ないことはわかっていますが、配列は巨大です。そして今、質問が来ます。より最適なものは何ですか。

(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 に答える