三个一维还是一个二维 在我的C和C++程序中,我有三个数组:一个是x坐标,y是坐标,列表是位置。我想知道如果我把这三个放在同一个数组中,会不会占用更少的内存。有什么想法吗?另外,是否只需要定义一个维度,而拥有另一个变量? 谢谢你的帮助。
这将需要完全相同的内存量;只是会有不同的安排 如果一系列复杂的东西同时出现,那么(可以说,一般来说)拥有这些东西是更好的风格。一个原因是,您不可能意外地拥有不同数量的每个组件。将它们放在一起不太可能占用更少的内存;根据结构布局和对齐方式,可能需要更多时间。但在这种情况下,这是值得怀疑的。最有可能的结果是它们将是相同的 将受到影响的一件事是缓存一致性。如果您通常同时访问所有值,那么将它们放在一起会稍微有效一些。另一方面,如果您通常一次压缩一个数组,那么将它们分开会更有效三个一维还是一个二维 在我的C和C++程序中,我有三个数组:一个是x坐标,y是坐标,列表是位置。我想知道如果我把这三个放在同一个数组中,会不会占用更少的内存。有什么想法吗?另外,是否只需要定义一个维度,而拥有另一个变量? 谢谢你的帮助。,c++,c,arrays,C++,C,Arrays,这将需要完全相同的内存量;只是会有不同的安排 如果一系列复杂的东西同时出现,那么(可以说,一般来说)拥有这些东西是更好的风格。一个原因是,您不可能意外地拥有不同数量的每个组件。将它们放在一起不太可能占用更少的内存;根据结构布局和对齐方式,可能需要更多时间。但在这种情况下,这是值得怀疑的。最有可能的结果是它们将是相同的 将受到影响的一件事是缓存一致性。如果您通常同时访问所有值,那么将它们放在一起会稍微有效一些。另一方面,如果您通常一次压缩一个数组,那么将它们分开会更有效 另外,如果不是很明显,我建
另外,如果不是很明显,我建议将值放在结构中,而不是2D数组中。内存布局类似,但语法不同。多维数组实际上只是一维数组。考虑到这一点,您可能希望使用数据本地化原则(当您访问内存中的数据点时,更容易在其附近加载数据点) 考虑您是一次性访问x,然后访问y,然后访问位置,还是一次性访问x和y以及位置数据。
更多地了解多维数组在内存中的表示方式,以决定如何“分组”数据。您正在混合术语。你说“列表”是什么意思?你的问题不清楚。您使用的是
c
还是c++
?为什么使用数组而不是变量?列表是什么意思?数组的数据是从列表形式的文本文件中获取的。我之所以使用数组,是因为可以存储多达100个点。我有C和C++两种程序。我喜欢保持两种语言的新鲜感,所以我通常会制作镜像程序。。。我说的可能很多,尤其是这听起来像是图形。@LightnessRacesinOrbit我最近没有真正测量过,所以我不想夸大它的好处。