2

我在代码中使用 boost 进行矩阵和向量运算,我正在使用的库之一(CGNS)有一个数组作为参数。如何以提升“方式”将向量复制到 double[] 中,或者更好的是,我可以在不创建副本的情况下传递数据吗?

我对 c++ 有点陌生,而且我刚刚开始使用 boost。我应该阅读此信息的指南吗?

4

2 回答 2

3

可以使用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;
}
于 2010-10-08T16:41:30.497 回答
0

取决于涉及的类型。因为std::vector您只需确保它是非空的,然后您就可以通过&v[0]. 您使用的 Boost 类型很可能也是如此。

于 2010-10-08T16:42:55.533 回答