我如何转换一个std::vector<双>到双数组[]?
当前回答
vector<double> thevector;
//...
double *thearray = &thevector[0];
这是保证工作的标准,但有一些警告:特别是要注意,只使用数组,而vector是在范围内。
其他回答
向量实际上是皮肤下的数组。如果你有一个函数:
void f( double a[]);
你可以这样调用它:
vector <double> v;
v.push_back( 1.23 )
f( &v[0] );
你不应该需要将一个向量转换成一个实际的数组实例。
vector<double> thevector;
//...
double *thearray = &thevector[0];
这是保证工作的标准,但有一些警告:特别是要注意,只使用数组,而vector是在范围内。
有一个相当简单的技巧来做到这一点,因为规范现在保证向量连续存储它们的元素:
std::vector<double> v;
double* a = &v[0];
std::vector<double> vec;
double* arr = vec.data();
如果你有一个函数,那么你可能需要这样:foo(&array[0], array.size());。如果你遇到了需要数组的情况,那么你需要重构,向量基本上是扩展数组,你应该总是使用它们。