采访者在我的一次采访中向我提出了这个问题。我认为无法清除向量的容量。有人可以确认吗?
答案 0 :(得分:5)
尽管不能保证一定能满足要求。
请求删除未使用的容量。
将Capacity()减小为size()是非绑定请求。这取决于 关于执行是否满足请求的说明。
此代码可能有效或可能无效,具体取决于实施方式(尽管在大多数实施方式中都适用)
template<typename T>
void ClearCapacityPleaseIfYouCan(std::vector<T> &v){
v.resize(0);
v.shrink_to_fit();
}
std::vector
试图向您隐藏存储抽象。对于大多数用例,您不需要知道容量如何增长或缩小。但是后来知道,访问员不会对真实的用例表示怀疑。
答案 1 :(得分:0)
有一种方法:与空向量交换。
std::vector<T> vec_to_clear;
....
{
std::vector<T> empty;
std::swap(vec_to_clear, empty);
}