В чем разница между следующими способами добавления элементов в вектор C++

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;
}

Фрагмент 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 ответ

Решение

reserve() не меняет размер вектора, что вы хотите resize() Это.

Другие вопросы по тегам