我有一个接受 i32 值的二维数组的类。 这是我的代码:
export class Kernel {
public size: i32;
public margin: i32;
public multipliers: Array<Array<i32>>;
public products: Array<Array<i32>>;
constructor(multipliers: Array<Array<i32>>) {
...
}
public getAverage(): i32 {
...
}
public iterate(grid: Array<Array<i32>>): Array<Array<i32>> {
...
}
}
这就是我试图实例化它的方式:
const kernelMultipliers = [
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]
];
let ptr = module.__retain(module.__allocArray(module.INT32ARRAY, kernelMultipliers));
let kernel = new module.exports.Kernel(ptr);
有没有办法可以分配二维值数组? 如果没有,是否有一种优雅的方式可以分配每个一维数组,并将Array<i32>
指针数组传递给类构造函数?
编辑:我想我可以展平二维数组,然后传入宽度,但我希望有更好的解决方案。
尝试首先分配整数数组的内部数组,然后分配整数数组的外部数组,例如使用这些 id:
export const INNER_ID = idof<i32[]>();
export const OUTER_ID = idof<i32[][]>();
let ptr = module.__retain(
module.__allocArray(module.OUTER_ID,
kernelMultipliers.map(row => module.__allocArray(module.INNER_ID, row))
)
);
let kernel = new module.Kernel(ptr);
module.__release(ptr); // unless you still need it externally
但是如果你需要真正的性能,使用展平二维数组总是要好得多
此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢你的贡献。
最有用的评论
但是如果你需要真正的性能,使用展平二维数组总是要好得多