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