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

use*_*449 2 c++ initialization vector push-back

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

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

struct Particle {
    double x[2];
    double v[2];
    double pressure;
    .......
};
Run Code Online (Sandbox Code Playgroud)

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

    std::vector<Particle> p_vec(2500);  
Run Code Online (Sandbox Code Playgroud)

一切正常,但当我用以下内容替换该行时:

    std::vector<Particle> p_vec;
    Particle p; 
    for (int i = 0; i < 2500; i++) p_vec.push_back(p);
Run Code Online (Sandbox Code Playgroud)

我的程序仍然使它通过for循环,但后来崩溃了.

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

Pub*_*bby 5

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

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

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