我在代碼中使用了矩陣和向量操作的boost,我使用的一個庫(CGNS)有一個數組作爲參數。如何以增強的方式將矢量複製到double []中,或者更好的是,我可以在不創建副本的情況下傳遞數據?boost :: numeric :: ublas :: vector <double>和double []
我對C++有點新鮮,剛剛開始提升。我應該閱讀有關此信息的指南嗎?
我在代碼中使用了矩陣和向量操作的boost,我使用的一個庫(CGNS)有一個數組作爲參數。如何以增強的方式將矢量複製到double []中,或者更好的是,我可以在不創建副本的情況下傳遞數據?boost :: numeric :: ublas :: vector <double>和double []
我對C++有點新鮮,剛剛開始提升。我應該閱讀有關此信息的指南嗎?
任何兩個輸入迭代器之間的內容可以複製到輸出迭代器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;
}
取決於所涉及的類型。對於std::vector
,您只需確保它不是空的,然後您可以通過&v[0]
。對於您正在使用的Boost類型,最有可能是相同的。
這是否適用於助推器? – ccook 2010-10-08 17:34:12
它可以做到沒有副本? Ty爲複製方法! – ccook 2010-10-08 17:35:19
@ccook:這是一個實現細節,但是您可以使用'v.data()。begin()'從'ublas :: vector'中獲得'double *'。 –
kennytm
2010-10-08 17:53:20
正是我需要的,謝謝! – ccook 2010-10-08 18:04:16