最終更新日時: 2026年02月17日 23時22分33秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<deque>

# std::deque::shrink_to_fit(C++11)

    void shrink_to_fit();           // (1) C++11
    constexpr void shrink_to_fit(); // (1) C++26

## 概要

領域をコンテナのサイズまで切り詰める

## 要件

- C++14 : 型`T`が`*this`に対してムーブ挿入可能であること

## 効果

- 確保した未使用のメモリ領域を`size()`に縮小させるというリクエストを行う。
  - 実装依存の最適化を許可するために、縮小するという動作は仕様上強制されない。
- C++17 : コンテナの要素に対する参照、ポインタ、およびイテレータとそれが指す要素への参照は無効となる。
- C++17 : コピー挿入可能でない型`T`のムーブコンストラクタによる例外を除き、例外が送出された場合この関数は何もしない。

## 戻り値

なし

## 計算量

- C++14 : 最大で、要素数に対して線形時間

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.6.1 ✅
- ICC: ??
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅

## 関連項目

名前 | 説明
--- | ---
`size` | 要素数を取得する

## 参照

- 『Effective STL - STLを効果的に使いこなす50の鉄則』 第17項 余分な容量を取り除くには「swap技法」を使おう
- LWG Issue 755. `std::vector` and `std:string` lack explicit shrink-to-fit operations
- LWG Issue 850. Should `shrink_to_fit` apply to `std::deque`?
- LWG Issue 2033. Preconditions of `reserve`, `shrink_to_fit`, and `resize` functions
- LWG Issue 2223. `shrink_to_fit` effect on iterator validity
- P3372R3 constexpr containers and adaptors