2010-10-08 45 views
2

我在代碼中使用了矩陣和向量操作的boost,我使用的一個庫(CGNS)有一個數組作爲參數。如何以增強的方式將矢量複製到double []中,或者更好的是,我可以在不創建副本的情況下傳遞數據?boost :: numeric :: ublas :: vector <double>和double []

我對C++有點新鮮,剛剛開始提升。我應該閱讀有關此信息的指南嗎?

回答

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; 
} 
+0

它可以做到沒有副本? Ty爲複製方法! – ccook 2010-10-08 17:35:19

+0

@ccook:這是一個實現細節,但是您可以使用'v.data()。begin()'從'ublas :: vector '中獲得'double *'。 – kennytm 2010-10-08 17:53:20

+0

正是我需要的,謝謝! – ccook 2010-10-08 18:04:16

0

取決於所涉及的類型。對於std::vector,您只需確保它不是空的,然後您可以通過&v[0]。對於您正在使用的Boost類型,最有可能是相同的。

+0

這是否適用於助推器? – ccook 2010-10-08 17:34:12

相關問題