我如何转换一个std::vector<双>到双数组[]?
当前回答
对什么?您需要澄清:您需要指向数组或数组的第一个元素的指针吗?
如果你正在调用一个期望前者的API函数,你可以执行do_something(&v[0], v.size()),其中v是一个双精度向量。向量的元素是连续的。
否则,你只需要复制每个元素:
double arr[100];
std::copy(v.begin(), v.end(), arr);
确保不仅arr足够大,而且arr被填满,或者你有未初始化的值。
其他回答
vector<double> thevector;
//...
double *thearray = &thevector[0];
这是保证工作的标准,但有一些警告:特别是要注意,只使用数组,而vector是在范围内。
我们可以使用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;
}
std::vector<double> vec;
double* arr = vec.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;
}
}
}
推荐文章
- equals vs Arrays。Java中的等号
- 如何计算一个NumPy bool数组中的真实元素的数量
- 如何找到一个值的数组索引?
- Python csv字符串到数组
- 面试问题:检查一个字符串是否是另一个字符串的旋转
- 如何使用枚举作为标志在c++ ?
- 在c++程序中以编程方式检测字节序
- 为什么我的程序不能在Windows 7下用法语编译?
- 如何获取变量的类型?
- 什么是奇怪的重复模板模式(CRTP)?
- 连接两个向量的最佳方法是什么?
- 在c++中,是通过值传递更好,还是通过引用到const传递更好?
- 在STL中deque到底是什么?
- 使用Java在原语数组中查找最大/最小值
- Windows上最好的免费c++分析器是什么?