я есть зЬй :: вектор, а именноуказатель арифметика векторов в C++
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());
это нормально, если я хочу, чтобы передать данные от mdata для фиксированного I, J к 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());
, но это кажется слишком сложным. возможно, есть способ достичь моей цели с помощью арифметики указателя?
любая помощь очень ценится :)
Возможно, вам захочется найти один из матричных классов, скрывающихся в Интернете. вектор векторных запахов. – gimpf