使用重复的push_back()初始化 vector 时出现问题
因此,在我的程序中,我有一个仅包含 double 和 double 组的结构:
struct Particle {
double x[2];
double v[2];
double pressure;
.......
};
当我像这样初始化我的 vector 之一时:
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。
第二个是复制未初始化的值,这是未定义的行为。
在push_back之前尝试正确初始化p
。
关于c++ - 使用重复的push_back()初始化 vector 时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604159/