std::deque<T,Allocator>::shrink_to_fit

来自cppreference.com
< cpp‎ | container‎ | deque

 
 
 
 
void shrink_to_fit();

请求移除未使用的容量。

它是减少使用内存而不更改序列的大小非强制性请求。请求是否达成依赖于实现。

所有迭代器和引用都会失效。end() 迭代器也会失效。

参数

(无)

类型要求
-
T 必须符合可移动插入 (MoveInsertable) *this 中的要求。(C++11 起)

返回值

(无)

复杂度

至多与容器大小成线性。

异常

如果不可复制插入 (CopyInsertable) T 的移动构造函数以外的操作抛出异常,那么没有效果。

(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. 已添加

参阅

返回容纳的元素数
(公开成员函数)