Использование того же вектора без части 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)
должны быть удалены.