所以在我的程序中,我有一个只包含双精度和双数组的结构:
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循环,但稍后崩溃。
这两种方法之间是否存在差异?
答案 0 :(得分:5)
第一个是默认构造元素,意味着它们的成员被初始化为0。
第二个是复制未初始化的值,这是未定义的行为。
尝试在push_back之前正确初始化p
。