我如何转换一个std::vector<双>到双数组[]?
当前回答
有一个相当简单的技巧来做到这一点,因为规范现在保证向量连续存储它们的元素:
std::vector<double> v;
double* a = &v[0];
其他回答
对于c++ 11, vector.data()就可以了。
如果你有一个函数,那么你可能需要这样:foo(&array[0], array.size());。如果你遇到了需要数组的情况,那么你需要重构,向量基本上是扩展数组,你应该总是使用它们。
你可以做一些这样的事情
vector <int> id;
vector <double> v;
if(id.size() > 0)
{
for(int i = 0; i < id.size(); i++)
{
for(int j = 0; j < id.size(); j++)
{
double x = v[i][j];
cout << x << endl;
}
}
}
对什么?您需要澄清:您需要指向数组或数组的第一个元素的指针吗?
如果你正在调用一个期望前者的API函数,你可以执行do_something(&v[0], v.size()),其中v是一个双精度向量。向量的元素是连续的。
否则,你只需要复制每个元素:
double arr[100];
std::copy(v.begin(), v.end(), arr);
确保不仅arr足够大,而且arr被填满,或者你有未初始化的值。
std::vector<double> vec;
double* arr = vec.data();