如何将std::vector<double>
转换为double array[]
? 数组
vector<double> thevector; //... double *thearray = &thevector[0];
按照标准能够保证能够使用此thearray
,可是有一些警告:特别要注意,只有在thevector
处于范围内时才使用thearray
。 函数
有一个至关简单的技巧,由于此规范如今保证向量能够连续存储其元素: spa
std::vector<double> v; double* a = &v[0];
向量其实是皮肤下的数组。 若是具备功能: 指针
void f( double a[]);
您能够这样称呼它: code
vector <double> v; v.push_back( 1.23 ) f( &v[0] );
您永远不须要将向量转换为实际的数组实例。 get
作什么的? 您须要澄清:您是否须要指向数组第一个元素或数组的指针? io
若是要调用指望使用前者的API函数,则能够执行do_something(&v[0], v.size())
,其中v
是double
s的向量。 向量的元素是连续的。 技巧
不然,您只须要复制每一个元素: bug
double arr[100]; std::copy(v.begin(), v.end(), arr);
确保不只arr
足够大,并且arr
会被填满,或者您具备未初始化的值。 copy
对于C ++ 11 , vector.data()
能够解决问题。