Использование того же вектора без части resize()

У меня есть вопрос о std::vector -

vector<int> vec(1,0);

while(//something_1)
{
    while(//something_2)
    {
       ...
       vec.pushback(var)
       ...
    }

    process(vec.size()); //every iteration- different size

    vec.clear();
    vec.resize(0,0);
}

На этот случай - каждый vec.push_back(var) происходит перераспределение нового массива размером на единицу больше, чем прежний массив.

У меня вопрос - есть ли способ с использованием одного вектора, поэтому после внутреннего while(//something_2), vec.push_back(var) команда оттолкнет от первой ячейки vec? Вместо того, чтобы использовать vec.clear() а также vec.resize(0,0)? чтобы я мог сохранить часть изменения размера и перераспределение.

Размер вектора важен для функции process(vec.size())

Благодарю.

1 ответ

Вы можете использовать резерв в первый раз, если вы заранее знаете, приблизительно, насколько может расти ваш вектор.

Чисто Leaves the capacity() of the vector unchanged. Который означает, что push_back & и другие модификаторы будут использовать ту же память.

resize(0,0) должны быть удалены.

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