是否可以用整数数组初始化双精度矢量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以用整数数组初始化双精度矢量?相关的知识,希望对你有一定的参考价值。

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

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

假设a[index]命名至少为nints的数组,然后

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); 

但也不是一个好主意。

以上是关于是否可以用整数数组初始化双精度矢量?的主要内容,如果未能解决你的问题,请参考以下文章

2d(3d)坐标的散列图(即双精度矢量)?

是否可以保真地将浮点双精度数往返于两个十进制整数?

是否可以保真地将浮点双精度数往返于两个十进制整数?

20180529-1

C:从整数中减去双精度

检查双精度值是不是为整数 - Swift