Да, вектор по-прежнему содержит 100 локаций. reserve
используется только для увеличения размера и не может его уменьшить. reserve(0);
вызов не будет иметь никакого эффекта вообще. В C ++ 1x я верю, что будет shrink_to_fit
вызов, который вас интересует.
В текущем стандарте вы должны использовать трюк подкачки для освобождения памяти, выделенной вектором, но прежде чем сделать это, внимательно подумайте, действительно ли вы хотите сделать это. Если вы добавите элементы обратно в вектор позже, вы просто перераспределите. Если вы не используете встроенную систему, просто дайте вектору управлять собственной памятью.
Трюк со свопом: используйте vector<T>().swap(myvector);
, чтобы освободить хранилище вектора.