x,y 座標平面を考えると、x,y は順序付けられたペアの一般的な表記法ですが、2 次元配列を使用する場合、myArray[row][col] があり、row は y で、col は x です。 . それは後ろ向きですか、それとも私の考えが間違っているだけですか?myArray[x][y] のように見えると思っていましたが、実際の行と列 (ゲームボードのように) が必要な場合は間違っています。行列ボードを真に模倣するのは myArray[y][x] ではないでしょうか。 ?
8 に答える
あなたはそれを正しく持っています、そしてそれは少し後ろ向きに感じます。行番号はay座標、列番号はx座標ですが、通常はrow、colと記述しますが、通常はx、yも記述します。
配列を[y][x]として書き込むか、[x] [y]として書き込むかは、主に、メモリ内のレイアウトを実際にどれだけ気にするか(およびそうする場合は、使用する言語)に依存します。また、行または列を分離して操作できる関数/メソッドを作成するかどうか。
C / C ++コードを記述している場合、配列は行メジャーオーダーで格納されます。つまり、データの1行を1次元配列として扱うことができます。ただし、1列のデータではできません。私の記憶が正しければ、VBは列のメジャー順序を使用するため、言語は異なります。C#も行のメジャーオーダーではないことに驚かれることでしょうが、わかりません。
これについては、さまざまな意見があるに違いありません。結論としては、一貫している限り、それは実際には問題ではありません。同じデータを使用する他のライブラリなどがある場合は、統合を容易にするために、それらが行うことは何でも行うのが理にかなっている場合があります。
これが厳密にあなた自身のコードにある場合は、あなたが快適に感じることは何でもしてください。私の個人的な好みは、myArray[y][x]を使用することです。それらが大きい場合、同時に多くアクセスするアイテムを一緒に保持することでパフォーマンス上の利点が得られる可能性があります。しかし、たとえあったとしても、非常に遅い段階になるまで、私はそれについて心配しません。
行を x 軸上の要素と考え、2 次元配列が y 軸上の行要素の集まりである場合、行を操作するために y を使用するのが普通です。 (その特定の行 x は常に同じであり、そのインデックスで変化するのは y です) 次に、x を使用して複数の行要素を操作します (行は垂直に積み上げられ、それぞれが特定の y 値にあります)
実際、それはあなた次第です。あなたの質問に考える権利はありません。たとえば、私は通常、一次元配列をセルの行と考えています。したがって、私の考えでは、配列[列][行]です。しかし、それは本当にあなた次第です...