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