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

履歴 編集

function
<deque>

# std::deque::resize

    void resize(size_type sz);                   // (1) C++11
    constexpr void resize(size_type sz);         // (1) C++26

    void resize(size_type sz, const T& c);           // (2) C++11
    constexpr void resize(size_type sz, const T& c); // (2) C++26

    void resize(size_type sz, const T& c = T()); // (1) + (2) : C++03まで

## 概要

要素数を変更する

## 要件

- (1) :

  - 型`T`がデフォルト構築可能であること
  - 型`T`が`*this`に対してコピー挿入可能であること (C++11まで)
  - 型`T`が`*this`に対してムーブ挿入が可能であること (C++14)

- (2) :

  - 型`T`が`*this`に対してコピー挿入可能であること

## 効果

- (1) :

  - もし`sz`が現在のコンテナの`size()`より小さい場合、以下の動作をする：
    - C++11まで : `erase(begin() + sz, end());`
    - C++14 : `pop_back()`関数を`size() - sz`回呼ぶ
    - C++17 : 後ろから`size() - sz`個の要素を削除する
  - もし`sz`が現在のコンテナの`size()`より大きい場合、`sz - size()`個だけ値初期化された`T`型オブジェクトのコピーを追加する。

- (2) :

  - C++11まで

      if (sz > size())
        insert(end(), sz - size(), c);
      else if (sz < size())
        erase(begin() + sz, end());

  - C++14
    - もし`sz`が現在のコンテナの`size()`より小さい場合、`pop_back()`関数を`size() - sz`回呼ぶ
    - もし`sz`が現在のコンテナの`size()`より大きい場合、`sz - size()`個だけオブジェクト`c`のコピーを追加する。
  - C++17以降
    - もし`sz`が現在のコンテナの`size()`より小さい場合、後ろから`size() - sz`個の要素を削除する
    - そうでなければ、`sz - size()`個だけオブジェクト`c`のコピーを追加する。

## 戻り値

なし

## 例

    #include <iostream>
    #include <deque>

    int main()
    {
      // 増加
      {
        std::deque<int> c = {3, 1, 4};
        c.resize(5);

        for (int x : c) {
          std::cout << x << std::endl;
        }
      }
      std::cout << std::endl;

      // 減少
      {
        std::deque<int> c = {3, 1, 4};
        c.resize(1);

        for (int x : c) {
          std::cout << x << std::endl;
        }
      }
    }

### 出力

    3
    1
    4
    0
    0

    3

## 参照

- LWG Issue 2033. Preconditions of `reserve`, `shrink_to_fit`, and `resize` functions
- LWG Issue 2323. `vector::resize(n, t)`'s specification should be simplified
- LWG Issue 2160. Unintended destruction ordering-specification of `resize`
- P3372R3 constexpr containers and adaptors

## 関連項目

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