如果我在向量上使用.reserve(items),向量将分配足够的内存来猜测我需要的项目数.
如果我以后使用.clear(),那么只清除向量还是保存我之前定义的保留?
谢谢.
sbi*_*sbi 49
指定std::vector<T>::clear()会影响大小.它可能不会影响容量.要重置容量,请使用交换技巧:
    std::vector<int> v1;
    // somehow increase capacity
    std::vector<int>().swap(v1);
注意:由于这个旧的答案仍然是upvotes(因此人们阅读它),我觉得需要添加 C++ 11添加std::vector<...>::shrink_to_fit(),它要求向量删除未使用的容量.
And*_*nck 11
它可能不会释放保留的内存,虽然我不认为行为是在标准中指定的.
编辑:好的,刚检查,标准只说后置条件是size() == 0虽然我没有遇到一个vector不保留保留内存的实现.
不,不会.通过电话试试吧vector::capacity().
进一步的证据是外观shrink_to_fit.标准的工作草案提到:
备注:shrink_to_fit是一个将capacity()减小为size()的非绑定请求.[注意:请求是非绑定的,以允许特定于实现的优化的纬度. - 尾注]