是否可以用整数数组初始化双精度矢量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以用整数数组初始化双精度矢量?相关的知识,希望对你有一定的参考价值。
a是一个空指针,n是指针的(已知)长度。我想使用下面的代码用整数指针初始化双精度矢量的值。我可以直接使用以下构造函数,还是必须先进行其他类型转换?
std::vector<double> vec((int*)a[index], (int*)a[index] + n);
答案
假设a[index]
命名至少为n
int
s的数组,然后
std::vector<double> vec((int*)a[index], (int*)a[index] + n);
确实使用从那些vec
中复制的n
double
中初始化了int
另一答案
首先,yuou不应使用C ++中的C样式强制转换,因为它可读性较差,危险性更高。其次-不清楚您从何处获得此变量index
,以及为什么认为自己需要它。一种可能的方式是:
auto ia = static_cast<int *>( a );
std::vector<double> vec( ia, ia + n);
当然,您可以使其更详细:
std::vector<double> vec( static_cast<int *>( a ), static_cast<int *>( a ) + n);
但也不是一个好主意。
以上是关于是否可以用整数数组初始化双精度矢量?的主要内容,如果未能解决你的问题,请参考以下文章