如何将std::vector<double>
转换为double array[]
?
#1楼
vector<double> thevector;
//...
double *thearray = &thevector[0];
按照标准可以保证可以使用此thearray
,但是有一些警告:特别要注意,只有在thevector
处于范围内时才使用thearray
。
#2楼
有一个相当简单的技巧,因为此规范现在保证向量可以连续存储其元素:
std::vector<double> v;
double* a = &v[0];
#3楼
向量实际上是皮肤下的数组。 如果具有功能:
void f( double a[]);
您可以这样称呼它:
vector <double> v;
v.push_back( 1.23 )
f( &v[0] );
您永远不需要将向量转换为实际的数组实例。
#4楼
做什么的? 您需要澄清:您是否需要指向数组第一个元素或数组的指针?
如果要调用期望使用前者的API函数,则可以执行do_something(&v[0], v.size())
,其中v
是double
s的向量。 向量的元素是连续的。
否则,您只需要复制每个元素:
double arr[100];
std::copy(v.begin(), v.end(), arr);
确保不仅arr
足够大,而且arr
会被填满,或者您具有未初始化的值。
#5楼
对于C ++ 11 , vector.data()
可以解决问题。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3198076