boost :: numeric :: ublas :: vector <double>和double [] </double>

时间:2010-10-08 16:37:33

标签: c++ boost cgns

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

我对c ++有点新意,我只是开始使用提升。有没有我应该阅读这个信息的指南?

2 个答案:

答案 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类型,很可能也是如此。