将指向数组元素的指针传递给函数

时间:2019-02-07 04:11:31

标签: javascript

我正在为线性代数中的一个任务编写程序,该程序对浮点数的矢量和矩阵进行计算。

v = [3.14159, 2.256, 1.5783, 6.782]

A = [   9.7     2.333    5.467   5.2123
        6.789   4.789   5.671   9.111
        1.113   4.562   8.223   5.2125
        6.666   7.8181  3.426   4.3567]

程序的一部分在输入向量上执行与在输入矩阵的指定行上执行的相同操作,并由C ++中的函数处理。在C ++中,相同的函数可以通过接受指向特定数组元素的指针来接受向量或矩阵的输入。只要指针算法是细致的,并且知道内存布局是行主要的,它就可以工作。我想知道是否可以在JavaScript中完成同样的操作。

我可以编写以下两个函数之一:

i)需要向量的函数。
在作品中传递矢量。
但是,传递矩阵无效。
我曾希望将指针传递给第二行中的第一个元素(包含6.789的元素)。然后通过A [0] [i]之类的内容访问整行。但是JavaScript不喜欢这样。

ii)一个需要矩阵的函数。
在作品中传递矩阵。
但是,传递向量无效。如果我尝试以v [0] [i]的形式访问矢量元素,那么JavaScript不会那样。

我的语法不正确,或者我试图做一些无法完成的事情。

向量和数组不能更改形式(即,变平等),因为程序的其余部分需要它们来保持其形式;向量需要保持为向量,矩阵需要保持为矩阵。

在JavaScript中,是否可以将指向特定数组元素的指针传递到函数中,然后在函数内将向量(或矩阵行)当作常规数组处理?

如果没有,是否有建议的解决方法?

1 个答案:

答案 0 :(得分:1)

这是你的工作吗?

function doSomethingWithVectorOrMatrixRow(vectorOrMatrix, matrixRow) {
  const aVector = matrixRow === undefined ? vectorOrMatrix : vectorOrMatrix[matrixRow];
  return doSomething(aVector);
}
/* Use it as */ doSomethingWithVectorOrMatrixRow(v); 
/* or */        doSomethingWithVectorOrMatrixRow(A, 1);

当然,将矩阵存储为平面Array并简单地在该Array的给定范围内进行操作会更有效,这对于矢量(range =整个向量),但您不能更改所使用的数据结构。