Удаляет ли std::vector.reserve() существующие значения?

#c #vector

#c #вектор

Вопрос:

Если у меня есть вектор, полный, допустим, idk Rectangles с типом x, y,w,h . И теперь я хочу добавить еще 10000 к моим существующим 10000, vector.reserve(20000) удалит ли вызов мои существующие 10000 прямоугольников?

Комментарии:

1. Нет, этого не произойдет.

2. Ах, круто. Спасибо

3. Вы могли бы использовать свою любимую поисковую систему для поиска ответа. Вот хороший сайт: en.cppreference.com/w/cpp/container/vector/reserve

4. » И теперь я хочу добавить 10000″ Остерегайтесь, что reserve это не добавит 10000 прямоугольников, это только подготовит вектор, чтобы 10000 можно было быстро вставить позже. Вам все равно придется emplace_back insert или иным образом добавить прямоугольники.

5. @peterwilson » Резерв существует только для тех случаев, когда я делаю много-много вставленных прямоугольников, поэтому не нужно повторно копировать вектор, чтобы добавить его » — конечно, для отдельных вставок, но просто имейте в виду, что если вы reserve() задаете значение, которое выше текущего capacity() , чем внутренний массив будетперераспределяется, а существующие элементы копируются в новую память.

Ответ №1:

Нет, он не удалит ни одно из предыдущих значений. Вы можете использовать его по своему усмотрению (до или после присвоения первых 10000 значений).