【发布时间】:2009-08-25 16:31:17
【问题描述】:
我有一个 3d stl 矢量,
vector<vector<vector<double> > > mdata;
我还有一个功能
myfun(const double ya[]);
更准确地说,它是来自 GNU 科学图书馆的一个函数,
gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
但这与我的问题无关。
所以现在我想将数据的“最后一个”维度传递给 myfun。我一直在尝试这个:
for (int s = 0; s < msize; s++) {
accelerators = new gsl_interp_accel*[msize];
splines = new gsl_spline*[msize];
for (int i = 0; i < msize; i++) {
accelerators[i] = gsl_interp_accel_alloc();
splines[i] = gsl_spline_alloc(gsl_interp_cspline_periodic, msize+1);
gsl_spline_init(splines[i], &(*mgrid.begin()), &(*mdata[s][i].begin()), msize+1);
}
}
但是编译器(g++、64bit、Ubuntu)抱怨:
在成员函数中 ‘
std::vector<std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >, std::allocator<std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > > > > SimpleAmfCalculator::interp_m(int)’: Calculator.cpp:100:错误:不能 将“std::vector<double, std::allocator<double> >*”转换为“const double*”,将参数“3”转换为“int gsl_spline_init(gsl_spline*, const double*, const double*, size_t)”使: *** [Calculator.o] 错误 1
非常感谢任何帮助!
【问题讨论】:
-
您显示了“数据”的声明,但出现错误的行中的变量是“mdata”。他们应该是一样的吗?
标签: c++ function vector constants