c++ - 调用 std::vector::clear() 会将 std::vector::capacity() 设置为零吗?

标签 c++ stl vector

如果我在 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/

相关文章:

c++ - std::list::remove 方法是否调用每个已删除元素的析构函数?

c++ - 关于c++ vector中for_each的一个问题

c++ - 创建值并将值插入对象的问题

vector - 如何将 Rust 书中的 "largest value in a Vec"示例转换为不使用 Copy 特性?

c++ - 在没有预处理器的情况下扩展 C/C++ 函数宏

c++ - 使用 std::tuple_element 时无效使用不完整类型的问题

c++ - 32 位和 64 位程序可以使用 MSMQ 进行通信吗?

c++ - 如何在 Visual C++ 下编译 WinCrypt.h?

c++ - 如何使用运算符来否定谓词函数!在 C++ 中?

c++ - slist 优于 vector 的好处?