二维数组的x,y和row,col属性是向后的吗?

joh*_*nny 40 multidimensional-array

如果我想到x,y坐标平面x,y是有序对的常用符号,但如果我使用二角形数组,我有myArray [row] [col],行是y,col是x .这是倒退还是我只是想错了?我认为它看起来像myArray [x] [y],但如果我想要真正的行和列(如游戏板中)那就错了.难道不是myArray [y] [x]真正模仿行列板?

Joh*_*ler 34

你做对了,确实感觉有些倒退.行号是y坐标,列号是x坐标,但我们通常写row,col但我们通常也写x,y.

是否要将数组编写为[y] [x]取决于或[x] [y],主要取决于您实际关心内存中的布局(如果使用的话,使用的是哪种语言).以及是否要编写可以独立操作行或列的函数/方法.

如果您正在编写C/C++代码,则数组存储在行主顺序中,这意味着可以将单行数据视为一维数组.但是单列数据却不行.如果我没记错的话,VB会使用列主要顺序,因此语言会有所不同.我很惊讶C#也不是主要的排序,但我不知道.

  • 这是我在20分钟的搜索中读到的最清晰的解释 (2认同)
  • @ILoveFortran 你的例子向我表明 C# 是行优先的(“{1, 2}”是一行)。考虑到 C# 与其他类 C 语言的血统,行优先似乎更有可能。另请参阅 /sf/ask/4763464961/ 的注释,其中解释了 CLI 被指定为使用行主序。 (2认同)

wil*_*ing 7

这就是我为自己的理智所做的:

int x = array[0].length;
int y = array.length;
Run Code Online (Sandbox Code Playgroud)

然后对于我进行的每个数组调用,我写:

array[y][x]
Run Code Online (Sandbox Code Playgroud)

这对于图形算法和水平/垂直矩阵翻转特别有用。