我有一个 std::vector,即
vector<vector<vector> > > mdata;
我想将数据从我的 mdata 向量传递到 GSL 函数
gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
作为你。我已经发现我可以做类似的事情
gsl_spline_init(spline, &(mgrid.front()), &(mdata[i][j][k].front()), mgrid.size());
如果我想将固定 i,j 的数据从 mdata 传递到 gsl_spline_init(),这很好。
但是,现在我需要传递 mdata 的第一个维度,因此对于固定的 j,k。
我知道对于任何两个固定索引,其余维度上的所有向量都具有相同的长度,因此我的向量是“常规立方体”。所以我需要的所有值之间的偏移量应该是相同的。
当然我可以创建一个临时向量
int j = 123;
int k = 321;
vector<double> tmp;
for (int i = 0: i < mdata.size(); i++)
tmp.push_back(mdata[i][j][k]);
gsl_spline_init(spline, &(mgrid.front()), &(tmp.front()), mgrid.size());
但这似乎太复杂了。也许有一种方法可以通过指针算术来实现我的目标?
任何帮助是极大的赞赏 :)