将矢量<int>分配给矢量是否安全<double>?

Safe to assign vector<int> to vector<double>?

本文关键字:gt lt double 安全 是否 int 分配      更新时间:2023-10-16

要为某个计算初始化变量,我必须从整数数组中为它们赋值。所以我这样做:

vector<double> vd;
int ai[N]; // Filled somewhere else
vd.assign(ai, ai+N);

在gcc 4.6.1 Linux下工作。但它总是正确的吗?或者我应该回到常绿的地方:

vd.resize(N);
for(int i=0; i < N; ++i) vd[i] = (double)ai[i];

谢谢你的澄清!

将进行隐式转换,因此是安全的。为什么不在构造vector时初始化它呢?

std::vector<double> vd(ai, ai + N);

我认为这是安全的,因为assign是一个模板。见http://www.cplusplus.com/reference/stl/vector/assign/。实现从整型赋值双精度,这基本上与其他解决方案没有什么不同。检查/usr/include/c++/4.6/bits/stl_vector.h的头,似乎构造器和赋值都调用相同的内部函数,_M_assign_dispatch