gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:50:08 25 4
gpt4 key购买 nike

我正在为线性代数中的一项任务编写程序,该程序对 float 的向量和矩阵执行计算。

即,

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 中,是否可以将指向特定数组元素的指针传递给函数,然后在函数内将向量(或矩阵行)视为常规数组?

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

最佳答案

这是否符合您的要求?

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 的给定范围进行操作会更有效,这同样有效对于向量(范围 = 整个向量),但您说您不能更改所使用的数据结构。

关于javascript - 将指向数组元素的指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54566177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com