可以安全地将vector <int>赋值给vector <double>?</double> </int>

时间:2011-10-26 10:08:38

标签: c++ casting vector

  

可能重复:
  C++ convert vector<int> to vector<double>

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

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

感谢您澄清!

2 个答案:

答案 0 :(得分:3)

隐式转换将会发生,因此它是安全的。为什么不在构造过程中初始化矢量:

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

答案 1 :(得分:0)

我认为这是安全的,因为assign是一个模板。见http://www.cplusplus.com/reference/stl/vector/assign/。实现从int中分配双精度数,这与您的其他解决方案基本没有区别。检查/usr/include/c++/4.6/bits/stl_vector.h中的标题似乎是构造函数并指定它们都调用相同的内部函数_M_assign_dispatch