我在代码中对矩阵和向量操作使用boost,我使用的一个库(CGNS)有一个数组作为参数。如何以boost“方式”将向量复制到double[]中,或者更好的是,我可以在不创建副本的情况下传递数据吗?
我对c++有点陌生,刚刚开始使用boost。有没有我应该用这个信息阅读的指南?
发布于 2010-10-09 00:41:30
可以将任意两个输入迭代器之间的内容复制到输出迭代器using the copy algorithm。因为ublas::vector和数组都有迭代器接口,所以我们可以使用:
#include <boost/numeric/ublas/vector.hpp>
#include <algorithm>
#include <cstdio>
int main () {
boost::numeric::ublas::vector<double> v (3);
v(0) = 2;
v(1) = 4.5;
v(2) = 3.15;
double p[3];
std::copy(v.begin(), v.end(), p); // <--
printf("%g %g %g\n", p[0], p[1], p[2]);
return 0;
}发布于 2010-10-09 00:42:56
取决于所涉及的类型。对于std::vector,只需确保它是非空的,然后就可以传递&v[0]了。对于您正在使用的Boost类型,很可能也是如此。
https://stackoverflow.com/questions/3892549
复制相似问题