如果我在 vector 上使用 .reserve(items), vector 将分配足够的内存来猜测我需要的项目数。
如果我稍后使用 .clear(),那只是清除 vector 还是保存我之前定义的储备?
谢谢。
最佳答案
指定std::vector<T>::clear()
影响大小。它可能不会影响容量。要重置容量,请使用 swap 技巧:
std::vector<int> v1;
// somehow increase capacity
std::vector<int>().swap(v1);
注意:由于这个旧答案仍在获得支持(因此人们阅读它),我觉得有必要添加 C++ 11 已添加std::vector<...>::shrink_to_fit()
,它请求 vector 删除未使用的容量。
关于c++ - 调用 std::vector::clear() 会将 std::vector::capacity() 设置为零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2628345/