您是否知道任何现代语言,其中数组被标记为列/行而不是C ++ / Java / C#row / column中的数据?
答案 0 :(得分:6)
这些语言都没有与数组关联的行或列的概念。只有程序员才将这些概念与数组的一个维度或另一个维度相关联。您可以自由地交换它们,并在数组的任何部分存储“行”或“列”。
答案 1 :(得分:2)
“行”和“列”只是一个解释问题。它们与语言中的任何基础都不对应。
(注意:有一些例外;通常是专用的数学语言,例如Matlab。)
答案 2 :(得分:0)
如果您询问行与列主要排序,那么存在微妙的低级别差异。它归结为多维数据如何存储在内存中。
查看此wikipedia article了解详情。
答案 3 :(得分:-2)
正如其他人所回答的那样,将索引解释为行或列取决于程序员(如何解释具有五维的数组?),除了少数语言或语言版本指定多维数组的布局方式内存,并且知道这可以通过避免分页和增加CPU缓存上的命中来帮助提高阵列密集型计算的性能。
也就是说,现代优化编译器应该能够找到访问数组的最有效方法,这样程序员就不必考虑内存布局了。
如果dependence analysis(也Dataflow Analysis)确定可以展开循环并且一次迭代中的表达式不依赖于先前迭代中的表达式,则可以重新排序表达式,例如,通过反转指数化。
这是用于确定循环是否可自动并行化的相同类型的分析。这是在函数式语言中更常用的东西,因为值的不变性使得分析更容易。在过程语言中,副作用可能隐藏在任何地方,因此优化只发生在涉及简单表达式的循环中。