我在代码中使用boost进行矩阵和向量运算,我正在使用的一个库(CGNS)有一个数组作为参数。如何以boost'方式将矢量复制到double []中,或者更好的是,我可以在不创建副本的情况下传递数据吗?
我对c ++有点新意,我只是开始使用提升。有没有我应该阅读这个信息的指南?
答案 0 :(得分:3)
任何两个输入迭代器之间的内容都可以复制到输出迭代器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;
}
答案 1 :(得分:0)
取决于所涉及的类型。对于std::vector
,您只需确保它为非空,然后您就可以通过&v[0]
。对于您正在使用的Boost类型,很可能也是如此。