我创建了几个包含数组的标题,它们都是嵌套的:
MonitorArray内部的ScreenArray [10]中的PixelArray [17] [动态指针]
这是因为我想在我进行测试时(远远不是一个称职的程序员)只有在此之后我意识到我可以将PixelArray [17]和ScreenArray [10]合并为一个2D数组:
MonitorArray [动态指针]中的PixelArray [10] [17]
我的问题是,使用单个2D阵列是否更有效?
答案 0 :(得分:1)
管理2D阵列需要比管理一维阵列更具竞争力,但2D阵列更优雅,因为您有更好的形式打包,因为您将数据分组保持在一起
答案 1 :(得分:1)
单个2D数组或包含数组的数组在C ++中是完全相同的。确实
typedef int InnerArray[20];
InnerArray OuterArray[30];
和
int MyArray2d[20][30];
基本上是两种向C ++编译器说同样内容的方法。
答案 2 :(得分:1)
只有在考虑如何访问数据时,才能回答特定数据布局在效率方面有多好的问题。
通常,您可以说应该将数据分组到内存中,以便连续访问内存或者至少在本地访问内存,然后您将受益于硬件支持,例如数据流或缓存效率。这通常被称为"面向数据的设计"。
话虽如此,由于两者的内存布局实际上是相同的,因此可能与您的两个建议没有多大区别。