三个一维或一二维

Three one dimension or one two dimensional

本文关键字:二维 一维 三个      更新时间:2023-10-16

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

将它们

放在一起不太可能花费更少的内存; 根据结构包装和对齐方式,甚至可能需要更多。不过,在这种情况下,这是值得怀疑的。最有可能的结果是它们会是一样的。

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

附言如果不是很明显,我主张将值放在结构中而不是 2D 数组中。内存布局相似,但语法不同。

它将需要完全相同的内存量;它只是排列方式不同。

如果这些东西放在一起,那么拥有 1 个复杂事物数组(可以说,一般来说(是更好的风格。 一个原因是您不会意外地拥有不同数量的每个组件。

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

考虑您是否将一次性访问您的 x,然后是您的 y,然后是您的位置

,或者您是否将同时访问 x y 和位置数据。详细了解多维数组在内存中的表示方式,以确定如何对数据进行"分组"。