三个一维或一二维
Three one dimension or one two dimensional
在我的C和C++程序中,我有三个数组:一个用于x坐标,一个y坐标和列表中的位置。我想知道如果我将所有三个放在同一个数组中是否会占用更少的内存。知道吗?另外,是否只需要定义一个维度并拥有另一个变量?谢谢你的帮助。
将它们
放在一起不太可能花费更少的内存; 根据结构包装和对齐方式,甚至可能需要更多。不过,在这种情况下,这是值得怀疑的。最有可能的结果是它们会是一样的。
将受到影响的一件事是缓存一致性。如果您通常同时访问所有值,则将它们靠近在一起会稍微更有效。另一方面,如果您通常一次压缩一个阵列,则将它们分开会更有效。
附言如果不是很明显,我主张将值放在结构中而不是 2D 数组中。内存布局相似,但语法不同。
它将需要完全相同的内存量;它只是排列方式不同。
如果这些东西放在一起,那么拥有 1 个复杂事物数组(可以说,一般来说(是更好的风格。 一个原因是您不会意外地拥有不同数量的每个组件。
多维数组实际上只是一个一维数组。考虑到这一点,您可能希望使用数据本地化原则(当您访问内存中的数据点时,更容易加载其附近的数据点(。
考虑您是否将一次性访问您的 x,然后是您的 y,然后是您的位置,或者您是否将同时访问 x y 和位置数据。详细了解多维数组在内存中的表示方式,以确定如何对数据进行"分组"。
相关文章:
- 将二维数组的所有元素插入到一维数组中
- C++语法差异:二维和一维数组(指针算术)
- 如何使用一维数组更改二维数组中的值?
- 使用二维数组作为一维数组是否正确?可能会导致未定义的行为左右?
- C++一维Char数组保存为二维Char数组
- 将一维数组转换为二维数组
- 在一维数组中对二维进行排序
- 将一维数组的索引转换为二维数组
- 通过访问二维数组实现双线性插值的概念类似于一维数组
- 将二维数组传递到只需要一维数组的函数中(C++)
- 将一维数组指定为(C/C++)中二维(多维)数组的元素
- 将一维数组转换为二维数组
- 如何使用malloc从一维数组转换为二维数组
- 如何在 c++ 中将一维数组中的值与二维数组中的值进行比较
- 将二维阵列模拟为一维阵列
- 将一维数组视为二维数组
- 将双**一维矩阵转换为双**二维方形矩阵
- 如何将一维数组更改为二维向量
- 你将如何使用二维来处理一维内存
- c++中二维和一维数组的等价