Я предполагаю, что у вас есть вектор, который временно содержит большое количество данных.Как только вектор будет очищен, он все равно будет занимать всю эту память.Вы хотите освободить эту память после того, как закончите с ней, но функция / объект, с которым вы работаете, еще не завершена.
Решения в порядке убывания желательности:
- Переработкакод, чтобы вектор, использующий код, находился в своем собственном блоке / функции / объекте, так что он будет уничтожен естественным образом
- Используйте трюк подкачки, так что вам не нужно беспокоиться о том, чтобы убедиться, что векторосвобождается при любых обстоятельствах.Его время жизни будет привязано к объекту / функции, в которой вы находитесь.
- new / delete вектор.Это освободит немного больше памяти, чем предыдущий метод, но также сложнее убедиться, что нет утечки памяти.
Единственное техническое различие между заменой и удалением состоит в том, что сам базовый вектор не уничтожается.,Это небольшие накладные расходы, и о них не стоит беспокоиться (если вы в конечном итоге уничтожите вектор)
Большее соображение заключается в том, что облегчает написание правильного кода, и я считаю, что swap выигрывает при удалении,но хуже, чем перемещать вектор куда-то еще.