繁体   English   中英

Java double [] []为double [],没有副本

[英]Java double[][] to double[] without copy

我有很多带有大double[][]数组的旧代码,我需要将double[]数组展平以用于新的库。 我不想复制,是否有一种简单的方法可以像在C语言中那样重新引用数组?

没有副本是不可能的。

  1. 具有double[][]的内存不连续。

  2. double[][]的“行”是指double[]对象。

  3. double[]占用的内存必须是连续的。

不可以。没有副本1是不可能的。

与C中的Nd数组不同,在C中执行数学运算以映射到单个连续对象上(因此强制转换可能起作用;但是请C语言律师来解决), Java中的“ 2d”数组数组(对象)数组(许多对象)。 这扩展到每个其他维度。

也就是说,Java中的2d数组可以像C中的double* [] ,其中辅助轴的每一行/列均已单独分配; 并且访问单元格需要两次查找操作,即使它仍然看起来像double[][]访问。


1因为Java不允许操作符(即[])重载,甚至试图包装从1d到Nd的访问也不再看起来像数组,而是列表/数组列表。 无论如何,这仍然需要在下面进行单独的查找。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM