Нет. Единственный способ уменьшить емкость вектора - трюк со свопом
template< typename T, class Allocator >
void shrink_capacity(std::vector<T,Allocator>& v)
{
std::vector<T,Allocator>(v.begin(),v.end()).swap(v);
}
и даже это не гарантирует работу в соответствии со стандартом. (Хотя сложно представить реализацию, в которой это не сработало бы.)
Насколько я знаю, следующая версия стандарта C ++ (которая раньше была C ++ 0x, но теперь стала C ++ 1x) будет иметь std::vector<>::shrink_to_fit()
.