有人能告诉我如何将矢量转换为数组吗? 我有一个函数返回一个double类型的向量,典型的像这样
std::vector<double> x_vec = LinspaceArray_DK2(0, 5.0, 0.01);
std::vector<double> y_vec = Calculate_y_vec(x_vec);
但是,遵循GSL(GNU scientific lib)函数需要一个数组作为输入
gsl_spline_init (spline, x_array, y_array, x_vec.length);
这里,x_array,y_array是对应于向量x_vec和y_vec的数组。
我在这里尝试了以下解决方案(How to convert vector to array in C++),建议转换如下:
std::vector<double> v;
double* a = &v[0];
但是,这种类型的转换对gsl_spline_init无效,后者将数组视为输入。
更新
我试着这样打电话:
// Convert all vector to an array
double* x_input_Array = &x_input[0];
double* y_input_Array = &y_input[0];
然后致电:
gsl_spline_init (spline, *x_input_Array, *y_input_Array, iNoOfPtsIni);
我收到此错误: 错误C2664:'gsl_spline_init':无法将参数2从'double'转换为'const double []'
谢谢, DK
答案 0 :(得分:3)
您不需要(也不应该)取消引用 - 您调用的函数需要数组,并传递它们的第一个元素。使用
gsl_spline_init (spline, x_input_Array, y_input_Array, iNoOfPtsIni);