c++ - 以下向 C++ vector 添加元素的方法有什么区别

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

Snippet1:以下代码片段打印出 0 1 但返回一个空 vector 。

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 。

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

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

最佳答案

reserve() 不会改变 vector 大小,你想要的是 resize() 它。

关于c++ - 以下向 C++ vector 添加元素的方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742445/

相关文章:

c++ - 在循环中使用 vector 中的对象

c++ - 我无法按类型访问使用 forward_as_tuple 创建的元组中的元素

c++ - C++11 标准中的哪条规则描述了下面提到的匹配?

c++ - 可以使用placement-new 和vector::data() 替换 vector 中的元素吗?

c++ - vector<int*>.push_back() 正在覆盖 front() 指向的值

c++ - IBM i 上 std::vector<std::string> 的最大容量

c++ - 使用仿函数时,括号前的表达式必须具有指向函数的指针类型

c++ - 从 boost 日期对象获取月份

c++ - 使用字符串大小的模数怪异行为

c++ - constexpr 在变量声明中的位置