【问题标题】:Safe to assign vector<int> to vector<double>? [duplicate]将vector<int> 分配给vector<double> 是否安全? [复制]
【发布时间】:2011-12-15 14:53:33
【问题描述】:

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

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

感谢您的澄清!

【问题讨论】:

    标签: c++ casting vector


    【解决方案1】:

    会进行隐式转换,因此是安全的。以及为什么不在构造过程中初始化向量:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-01
        • 1970-01-01
        • 2021-11-07
        • 2020-10-11
        • 2012-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多