【问题标题】:Problems when using repeated push_back() to initialize a vector使用重复 push_back() 初始化向量时的问题
【发布时间】:2013-03-24 21:21:53
【问题描述】:

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

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

【问题讨论】:

  • 您能否详细说明“稍后崩溃”?

标签: c++ vector initialization push-back


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2020-05-12
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多