gpt4 book ai didi

c++ - C++中 vector 的指针算法

转载 作者:行者123 更新时间:2023-11-28 03:59:56 26 4
gpt4 key购买 nike

我有一个std::vector,即

vector<vector<vector> > > mdata;

我想将数据从我的 mdata vector 传递到 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。

我知道对于任何两个固定索引,沿剩余维度的所有 vector 都具有相同的长度,因此我的 vector 是一个“常规立方体”。所以我需要的所有值之间的偏移量应该相同。

当然我可以创建一个临时 vector

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());

但这似乎太复杂了。也许有一种方法可以通过指针运算实现我的目标?

非常感谢任何帮助:)

最佳答案

如果不重新设计数组消费者函数 gsl_spline_init(),您真的无法做到这一点——它依赖于传递的数据是一个连续的数据 block 。这不是三级 vector 的情况 - 它不仅是一个立方体,而且每个级别都有一个分配在堆上的单独缓冲区。

关于c++ - C++中 vector 的指针算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1333069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com