嵌套数组还是嵌套的2D数组?

时间:2014-10-24 08:42:12

标签: c++ arrays performance

我创建了几个包含数组的标题,它们都是嵌套的:

  

MonitorArray内部的ScreenArray [10]中的PixelArray [17] [动态指针]

这是因为我想在我进行测试时(远远不是一个称职的程序员)只有在此之后我意识到我可以将PixelArray [17]和ScreenArray [10]合并为一个2D数组:

  

MonitorArray [动态指针]中的PixelArray [10] [17]

我的问题是,使用单个2D阵列是否更有效?

3 个答案:

答案 0 :(得分:1)

管理2D阵列需要比管理一维阵列更具竞争力,但2D阵列更优雅,因为您有更好的形式打包,因为您将数据分组保持在一起

答案 1 :(得分:1)

单个2D数组或包含数组的数组在C ++中是完全相同的。确实

typedef int InnerArray[20];
InnerArray OuterArray[30];

int MyArray2d[20][30];

基本上是两种向C ++编译器说同样内容的方法。

答案 2 :(得分:1)

只有在考虑如何访问数据时,才能回答特定数据布局在效率方面有多好的问题。

通常,您可以说应该将数据分组到内存中,以便连续访问内存或者至少在本地访问内存,然后您将受益于硬件支持,例如数据流或缓存效率。这通常被称为"面向数据的设计"。

话虽如此,由于两者的内存布局实际上是相同的,因此可能与您的两个建议没有多大区别。