c++ - 使用重复的push_back()初始化 vector 时出现的问题

标签 c++ vector initialization push-back

使用重复的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/

相关文章:

c++ - 输出流中引用的奇怪行为

c++ - 编写一个程序,读取一串包含标点符号的字符,然后写入读取的内容,但标点符号被删除

r - 将二进制向量转换为二进制矩阵

c++ - vector <X*>* 与 vector <X>*

ios - 从初始化程序返回而不初始化所有存储的属性swift ios

c++ - 为什么即使不使用指向指针的指针作为参数调用该函数,它也能正常工作?

c++ - Visual Studio 2008 编译 C++ 文件中的任何内容?

c++ - 找出 vector 中相同整数的个数

c++ - 基类需要引用尚未构造的派生类成员

c++ - 从字符初始化 std::string