std::deque<T,Allocator>::shrink_to_fit
来自cppreference.com
void shrink_to_fit(); |
||
请求移除未使用的容量。
它是减少使用内存而不更改序列的大小非强制性请求。请求是否达成依赖于实现。
所有迭代器和引用都会失效。end() 迭代器也会失效。
参数
(无)
类型要求 | ||
-T 必须符合可移动插入 (MoveInsertable) 到 *this 中的要求。(C++11 起)
|
返回值
(无)
复杂度
至多与容器大小成线性。
异常如果不可复制插入 (CopyInsertable) 的 |
(C++11 起) |
注解
在 libstdc++ 中,shrink_to_fit()
不能在 C++98 模式中使用。
示例
运行此代码
#include <deque> int main() { std::deque<int> nums(1000, 42); nums.push_front(1); nums.pop_front(); nums.clear(); // nums 现在不含项目,但它仍保有分配的内存。 // 调用 shrink_to_fit 可能会释放任何不使用的内存。 nums.shrink_to_fit(); }
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 850 | C++98 | std::deque 缺少显式的移除未使用的容量的操作
|
已提供 |
LWG 2033 | C++11 | 1. T 不需要可移动插入 (MoveInsertable) 2. 缺失了复杂度要求 |
1. 需要 2. 已添加 |
参阅
返回容纳的元素数 (公开成员函数) |