0
我需要将gsl_vector
传递给需要C风格数组的函数,反之亦然。GSL - GNU Scientific Library:避免深度复制
慢的方法(这涉及到一个深拷贝)应该是:
const size_t n = 4;
gsl_vector gx; // initialize and fill
gsl_vector gy; // initialize
double in[n], out[n];
for(size_t i = 0; i < n; ++i)
in[i] = gsl_vector_get(gx, i);
func(in, out, n);
for(size_t i = 0; i < n; ++i)
gsl_vector_set(gy, i, out[i]);
。
我可以这样做:
const size_t n = 4;
gsl_vector gx; // initialize and fill
gsl_vector gy; // initialize
func(gx.data, gy.data, n);
是的,但唯一的权威是我自己做的。 – Evert 2014-10-22 11:39:59
但是,我不明白为什么有一个函数具有'in'和'out'数组,但显然你将两个参数传给它的是相同的数组。这看起来不正确(即,函数改变了输入数组,所以应该只有一个'inout'数组)。 – Evert 2014-10-22 11:41:07
你可能应该使用'gv.size'而不是'n'。 – Evert 2014-10-22 11:42:19