如何清除c ++中的Vector容量?

Sat*_*ole -1 c++ stl vector

在我的一次采访中,采访者向我提出了这个问题.我认为没有办法清除载体的容量.任何人都可以确认吗?

bas*_*hrc 5

你需要shrink_to_fit

虽然它不能保证电话会受到尊重.

请求删除未使用的容量.

这是一个将capacity()减小到size()的非绑定请求.这取决于实现是否满足请求.

根据实现,此代码可能有效,也可能无效(尽管适用于大多数实现)

template<typename T>
void ClearCapacityPleaseIfYouCan(std::vector<T> &v){
    v.resize(0);
    v.shrink_to_fit();
}
Run Code Online (Sandbox Code Playgroud)

std::vector试图隐藏你的存储抽象.对于大多数用例,您不需要知道容量如何增长或缩小.但是,众所周知,访调员不会对真实用例给出该死的.