Reserve Then Push

Идиома reserve-then-push , также известная как Pre-reservation (предварительное резервирование) применяется для оптимизации заполнения вектора, когда итоговый размер известен заранее. Главный смысл — избежать многократных переаллокаций и копирований при push_back.

Неправильно:

std::vector<int> v;
for (int i = 0; i < 1000000; ++i)
    v.push_back(i); // Переаллокация и копирование при каждом расширении

Правильно:

std::vector<int> v;
v.reserve(1000000);             // Одна аллокация под всё
for (int i = 0; i < 1000000; ++i)
    v.push_back(i);             // Только O(1) без переаллокаций