#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 значений).