2

使用重复 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 循环,但后来崩溃了。

这两种方法之间有什么区别吗?

4

1 回答 1

5

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

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

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

于 2013-03-24T21:24:21.287 回答