C++ 可以用整数数组初始化双向量吗?

C++ 可以用整数数组初始化双向量吗?,c++,C++,a是空指针,n是指针的(已知)长度。 我想使用下面的代码初始化带有整数指针的双向量的值。 我可以直接使用下面的构造函数吗?还是必须先进行另一个类型转换 std::vector<double> vec((int*)a[index], (int*)a[index] + n); 向量向量向量((int*)a[index],(int*)a[index]+n); 假设a[索引]命名一个至少包含nints的数组,然后 std::vector<double> vec((int*)a[

a是空指针,n是指针的(已知)长度。 我想使用下面的代码初始化带有整数指针的双向量的值。 我可以直接使用下面的构造函数吗?还是必须先进行另一个类型转换

std::vector<double> vec((int*)a[index], (int*)a[index] + n);
向量向量向量((int*)a[index],(int*)a[index]+n);
假设
a[索引]
命名一个至少包含
n
int
s的数组,然后

std::vector<double> vec((int*)a[index], (int*)a[index] + n);
向量向量向量((int*)a[index],(int*)a[index]+n);

确实初始化了<代码> VEC<代码> <代码> N< /代码>代码>双 s,从那些代码> int S/

< P>首先,在C++中,不应该使用C样式的Cask,因为它不可读和更危险。第二,不清楚这个变量

索引是从哪里来的,也不清楚为什么需要它。一种可能的方法是(假设
a
只指向
int
大小为
n
的数组):

auto ia=static\u cast(a);
std::向量向量向量c(ia,ia+n);
当然,您可以让它更详细:

std::vector<double> vec( static_cast<int *>( a ), static_cast<int *>( a ) + n); 
std::向量向量向量(static_cast(a),static_cast(a)+n);

但是这也不是一个好主意。

您是否能够添加更多的代码,以便我们可以看到
a
的声明?n是指针的(已知)长度-这不清楚
n
实际上是什么。是整数的数目吗?字节数?你从哪里得到
索引的
?你为什么把这两个概念混为一谈?1) 从整数数组初始化一个双精度向量的想法和2)从
索引
th元素获取整数数组的地址
void*
数组的想法你的问题应该只有一个焦点。你正在使用范围构造函数-这很好。您是否需要解释为什么范围构造函数可以与裸指针一起使用(隐式地从int*获取输入迭代器),或者为什么隐式地发生从double到int的转换?这看起来太神奇了吗?为了与最初的问题保持一致,我认为你应该有
std::vector@Wyck我不认为我可以在这个意义上保持一致-当前代码是不正确的,而且根本不清楚
索引
在这里做什么。正如我所说,我编写代码时假设
索引
在这里是不相关的。如果OP澄清,我将更新我的答案。
std::vector<double> vec( static_cast<int *>( a ), static_cast<int *>( a ) + n);