三维或一维二维

时间:2014-12-18 00:03:50

标签: c++ c arrays

在我的C和C ++程序中,我有三个数组:一个用于x坐标,一个y坐标和列表中的位置。我想知道如果我将所有三个放在同一个数组中,是否需要更少的内存。任何的想法?此外,是否只需要定义一个维度并拥有另一个变量? 谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

不太可能将较少的内存放在一起;取决于结构包装和对齐,它甚至可能需要更多。但是,在这种情况下,这是值得怀疑的。最可能的结果是它们是相同的。

受影响的一件事是缓存一致性。如果您通常同时访问所有值,将它们靠近在一起会稍微高效一些。另一方面,如果您通常一次压缩一个数组,将它们分开会更有效。

P.S。如果它不明显,我主张将值放在结构中而不是2D数组中。内存布局类似,但语法不同。

答案 1 :(得分:0)

它将占用完全相同的内存量;它将以不同的方式排列。

如果这些东西结合在一起,那么拥有一系列复杂事物就是(可以说是一般)更好的风格。一个原因是你不能意外地拥有不同数量的每个组件。

答案 2 :(得分:0)

多维数组实际上只是一维数组。考虑到这一点,您可能希望使用数据本地化原则(当您访问内存中的数据点时,更容易在其附近加载数据点)。

考虑您是否可以一次访问您的x,然后是您的y,然后是您的位置,或者您是否将同时访问x y和位置数据。 更多地了解多维数组如何在内存中表示,以决定如何“分组”您的数据。