我如何转换一个std::vector<双>到双数组[]?
当前回答
向量实际上是皮肤下的数组。如果你有一个函数:
void f( double a[]);
你可以这样调用它:
vector <double> v;
v.push_back( 1.23 )
f( &v[0] );
你不应该需要将一个向量转换成一个实际的数组实例。
其他回答
对什么?您需要澄清:您需要指向数组或数组的第一个元素的指针吗?
如果你正在调用一个期望前者的API函数,你可以执行do_something(&v[0], v.size()),其中v是一个双精度向量。向量的元素是连续的。
否则,你只需要复制每个元素:
double arr[100];
std::copy(v.begin(), v.end(), arr);
确保不仅arr足够大,而且arr被填满,或者你有未初始化的值。
向量实际上是皮肤下的数组。如果你有一个函数:
void f( double a[]);
你可以这样调用它:
vector <double> v;
v.push_back( 1.23 )
f( &v[0] );
你不应该需要将一个向量转换成一个实际的数组实例。
std::vector<double> vec;
double* arr = vec.data();
对于c++ 11, vector.data()就可以了。
我们可以使用data()方法来做到这一点。c++ 11提供了这个方法。
代码片段
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
vector<int>v = {7, 8, 9, 10, 11};
int *arr = v.data();
for(int i=0; i<v.size(); i++)
{
cout<<arr[i]<<" ";
}
return 0;
}
推荐文章
- 如何构建和使用谷歌TensorFlow c++ api
- 在JavaScript中根据键值查找和删除数组中的对象
- 如何确定一个数组是否包含另一个数组的所有元素
- 给定一个数字数组,返回所有其他数字的乘积的数组(不除法)
- 多维数组如何在内存中格式化?
- 断言是邪恶的吗?
- 下面这些短语在c++中是什么意思:0 -,default-和value-initialization?
- 在STL地图中,使用map::insert比[]更好吗?
- C++ Linux的想法?
- TypeScript枚举对象数组
- 如何为Fedora安装g++ ?
- 获取数组值的键名
- Std::cin输入空格?
- c++标准是否要求iostreams的性能很差,或者我只是在处理一个糟糕的实现?
- 如何规范化一个NumPy数组到一定的范围内?