这可能是一个愚蠢的问题,但我花了太久不知道原因。为什么二维数组访问器[列] [行]而不是[行] [列]格式?
全部通过数学课,我们学会把坐标放在(x,y)时尚。它深入我们的脑海。现在输入C/C++并访问x = 0,y = 3元素,我必须做data[0][3]
而不是data[3][0]
。
为什么数组访问是(y,x)格式而不是(x,y)?
有没有特别的理由呢,还是我不得不接受并继续我的生活?
编辑: 我正在看迈克阿克顿(http://gdcvault.com/play/1021866/Code-Clinic-2015-How-to),他谈到了关于行主要访问和列重大的访问性能这一GDC演讲。它是可以理解的,因为任何数组都是顺序存储器,如果我尝试执行列主要访问,则需要时间跳转到不同的内存位置。
但它是行列格式... – Cristy
这就是当你按照行优先顺序存储数组时发生的情况。过去有很好的理由来做这件事,例如。在光栅显示器上显示图像。如果这是你觉得你确实需要的东西,那么没有什么可以停下来把你自己的数组按照专栏顺序排列。 – Rook
'int array [HEIGHT] [WIDTH]'=>'array [y] [x]','int array [WIDTH] [HEIGHT]'=>'array [x] [y]' – 0x5453