i ont un std :: vecteur, à savoirarithmétique des pointeurs sur des vecteurs dans C++
vector<vector<vector> > > mdata;
je veux transmettre des données de mon vecteur MDATA à la fonction GSL
gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
comme toi. je l'ai déjà compris que je peux faire des choses comme
gsl_spline_init(spline, &(mgrid.front()), &(mdata[i][j][k].front()), mgrid.size());
cela est très bien si je veux je transmettre les données à partir MDATA pour fixé, j à gsl_spline_init().
Cependant, maintenant je devrais passer le long de la première dimension de mdata, donc pour j fixe, k. Je sais que pour deux indices fixes, tous les vecteurs le long des dimensions restantes ont la même longueur, donc mon vecteur est un 'cube régulier'. donc le décalage entre toutes les valeurs dont j'ai besoin devrait être le même.
Bien sûr, je pourrais créer un vecteur temporaire
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());
mais cela semble trop compliqué. peut-être y at-il un moyen d'atteindre mon objectif avec l'arithmétique du pointeur?
toute aide est grandement appréciée :)
Vous voudrez peut-être rechercher l'une des classes matricielles qui se cachent sur le Web. vecteur de vecteur d'odeurs de vecteur. – gimpf