如何将向量转换为数组

如何将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()能够解决问题。