要为某个计算初始化变量,我必须从整数数组中为它们赋值。 所以我这样做:
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];
感谢您澄清!
答案 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
。