将元素添加到c ++向量的以下方法之间的区别是什么?

use*_*311 2 c++ push-back stdvector c++11

Snippet1:以下代码段打印出0 1但返回一个空向量.

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

代码段2:以下代码段打印出0 1并返回包含{0,1}的向量.

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

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

app*_*ple 5

reserve()不会改变矢量大小,你想要的是resize()它.