以下将元素添加到C ++向量的方式之间有什么区别

时间:2019-02-18 07:39:34

标签: c++ c++11 stdvector push-back

片段1:以下片段打印出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;
}

代码段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;
}

为什么代码片段1不能像代码片段2一样工作。如果我要保留内存并将值添加到向量中。

1 个答案:

答案 0 :(得分:5)

reserve()不会更改矢量大小,您想要的是resize()