我如何转换一个std::vector<双>到双数组[]?
当前回答
std::vector<double> vec;
double* arr = vec.data();
其他回答
vector<double> thevector;
//...
double *thearray = &thevector[0];
这是保证工作的标准,但有一些警告:特别是要注意,只使用数组,而vector是在范围内。
有一个相当简单的技巧来做到这一点,因为规范现在保证向量连续存储它们的元素:
std::vector<double> v;
double* a = &v[0];
向量实际上是皮肤下的数组。如果你有一个函数:
void f( double a[]);
你可以这样调用它:
vector <double> v;
v.push_back( 1.23 )
f( &v[0] );
你不应该需要将一个向量转换成一个实际的数组实例。
我们可以使用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;
}
你可以做一些这样的事情
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;
}
}
}
推荐文章
- 转换data.frame列到向量?
- Windows和Linux上的c++编译:ifdef开关
- 比较JUnit断言中的数组,简洁的内置方式?
- 数组到哈希Ruby
- c++中size_t和int的区别是什么?
- 在C和c++中静态变量存储在哪里?
- Java 8流和数组操作
- 在javascript中从平面数组构建树数组
- 为什么标准迭代器范围是[begin, end]而不是[begin, end]?
- c++双地址操作符?(& &)
- 在bash中传递数组作为参数
- 函数标题中的箭头操作符(->)
- 如何在c++中初始化一个向量
- 返回类型为'?:'(三元条件运算符)
- 当分配vector时,它们使用的是堆上的内存还是堆栈上的内存?