如何将向量转换为数组

折月煮酒 提交于 2020-03-19 12:44:56

3 月,跳不动了?>>>

如何将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()) ,其中vdouble s的向量。 向量的元素是连续的。

否则,您只需要复制每个元素:

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

确保不仅arr足够大,而且arr会被填满,或者您具有未初始化的值。


#5楼

对于C ++ 11vector.data()可以解决问题。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!