如何將向量轉換爲數組

如何將std::vector<double>轉換爲double array[]數組


#1樓

vector<double> thevector;
//...
double *thearray = &thevector[0];

按照標準能夠保證能夠使用此thearray ,可是有一些警告:特別要注意,只有在thevector處於範圍內時才使用thearray函數


#2樓

有一個至關簡單的技巧,由於此規範如今保證向量能夠連續存儲其元素: spa

std::vector<double> v;
double* a = &v[0];

#3樓

向量其實是皮膚下的數組。 若是具備功能: 指針

void f( double a[]);

您能夠這樣稱呼它: code

vector <double> v;
v.push_back( 1.23 )
f( &v[0] );

您永遠不須要將向量轉換爲實際的數組實例。 get


#4樓

作什麼的? 您須要澄清:您是否須要指向數組第一個元素或數組的指針? io

若是要調用指望使用前者的API函數,則能夠執行do_something(&v[0], v.size()) ,其中vdouble s的向量。 向量的元素是連續的。 技巧

不然,您只須要複製每一個元素: bug

double arr[100];
std::copy(v.begin(), v.end(), arr);

確保不只arr足夠大,並且arr會被填滿,或者您具備未初始化的值。 copy


#5樓

對於C ++ 11vector.data()能夠解決問題。

相關文章
相關標籤/搜索