以下将元素添加到 c++ vector 的方法有什么区别

What's the difference between the following ways of adding elements to a c++ vector

片段 1:以下片段打印出 0 1 但 returns 一个空向量。

vector<int> trial() {
    vector<int> ret;
    ret.reserve(2);
    ret[0] = 0;
    ret[1] = 1;
    cout << ret[0] << " " << ret[1] << "\n";
    return ret;
}

代码段 2:以下代码段打印出 0 1 和 returns 向量包含 {0,1}。

vector<int> trial() {
    vector<int> ret;
    ret.push_back(0);
    ret.push_back(1);
    cout << ret[0] << " " << ret[1] << "\n";
    return ret;
}

为什么片段 1 不像片段 2 那样工作。如果我要保留内存并向向量添加值。

reserve()不改变向量大小,你要的就是resize()它。