使用重复的push_back()初始化向量时出现的问题

时间:2013-03-24 21:21:53

标签: c++ vector initialization push-back

使用重复的push_back()初始化向量

的问题

所以在我的程序中,我有一个只包含双精度和双数组的结构:

struct Particle {
    double x[2];
    double v[2];
    double pressure;
    .......
};

当我初始化我的一个向量时:

    std::vector<Particle> p_vec(2500);  

一切正常,但当我用:

替换该行时
    std::vector<Particle> p_vec;
    Particle p; 
    for (int i = 0; i < 2500; i++) p_vec.push_back(p);

我的程序仍然通过for循环,但稍后崩溃。

这两种方法之间是否存在差异?

1 个答案:

答案 0 :(得分:5)

第一个是默认构造元素,意味着它们的成员被初始化为0。

第二个是复制未初始化的值,这是未定义的行为。

尝试在push_back之前正确初始化p