gx->data[i] = x[i]; // Access up to N elements from x
我们需要的是提供的库函数
void gsl_vector_set(gsl_vector *v, const size_t i, double x)
This function sets the value of the i-th element of a vector v to x. If i lies outside the allowed range of 0 to size - 1 then the error handler is invoked. An inline version of this function is used when HAVE_INLINE is defined.
1条答案
按热度按时间3htmauhk1#
通过查看
gsl lib
(link)的在线文档,我们可以找到已经完成您想要的任务的函数。作为一般规则,无论何时使用库中定义的类型,您都应该查找提供的函数来处理此类类型。这样做的理由是,它们可能会处理在实现函数时可能忘记的错误或其他字段。
在你的例子中,看起来你有一个double向量,你想把每个元素赋给
gsl_vector
的元素,我这么说是因为你想:我们需要的是提供的库函数
为了使用它,我们需要确保之前通过创建
gsl_vector
分配了足够的内存。我假设您有N
元素,所以完整的代码应该是:有趣的是,通过查看
gsl_vector_set
的源代码,它会做一些与您所想到的类似的事情,但当然还有一些对库至关重要的麻烦,比如检查范围和使用步幅来说明不同的块大小。