Чтобы очистить вектор и использовать как можно меньше емкости, используйте трюк подкачки:
std::vector<T>().swap(foo);
Это создает пустой вектор, заменяет его внутренние элементы на foo
, а затем уничтожает временный вектор, избавляясь от элементов, которые когда-то принадлежали foo
, и оставляя foo
, как если бы он был только что создан.