最終更新日時: 2026年07月22日 16時08分23秒 (JST)
rotarymars が更新

履歴 編集

function
<deque>

# std::deque::operator=

    deque& operator=(const deque& x);           // (1) C++03
    constexpr deque& operator=(const deque& x); // (1) C++26

    deque& operator=(deque&& x);                                       // (2) C++11
    deque& operator=(deque&& x)
      noexcept(allocator_traits<Allocator>::is_always_equal::value);   // (2) C++17
    constexpr
      deque& operator=(deque&& x)
        noexcept(allocator_traits<Allocator>::is_always_equal::value); // (2) C++26

    deque& operator=(initializer_list<T> init);           // (3) C++11
    constexpr deque& operator=(initializer_list<T> init); // (3) C++26

## 概要

- (1) : コピー代入
- (2) : ムーブ代入
- (3) : 初期化子リストの代入

## 効果

- (1) : 同じテンプレートパラメータを持つ`deque`クラスのオブジェクトをコピー代入する。`*this`の全ての要素が解放され、`x`の全ての要素が`*this`にコピーされる。
- (2) : 同じテンプレートパラメータを持つ`deque`クラスのオブジェクトをムーブ代入する。`*this`の全ての要素が解放され、`x`の全ての要素が`*this`にムーブされる。
- (3) : 同じ要素型を持つ`initializer_list`クラスのオブジェクトをコピー代入する。`*this`の全ての要素が解放され、`init`の全ての要素が`*this`にコピーされる。

## 戻り値

`*this`

## 計算量

- (1) : 全要素のデストラクタ呼び出しとコピーを行うために、線形時間
- (2) : 全要素のデストラクタ呼び出しをするために、線形時間
- (3) : 全要素のデストラクタ呼び出しとコピーを行うために、線形時間

## 例

    #include <iostream>
    #include <deque>
    #include <utility>

    template <class T>
    void print(const char* name, const std::deque<T>& c)
    {
      std::cout << name << " : {";
      for (const T& x : c) {
        std::cout << x << " ";
      }
      std::cout << "}" << std::endl;
    }

    int main ()
    {
      std::deque<int> c = {1, 2, 3};

      // コピー代入
      std::deque<int> c1;
      c1 = c;

      // ムーブ代入
      std::deque<int> c2;
      c2 = std::move(c);

      // 初期化子リストの代入
      std::deque<int> c3;
      c3 = {1, 2, 3};

      ::print("c1", c1);
      ::print("c2", c2);
      ::print("c3", c3);
    }

### 出力

    c1 : {1 2 3 }
    c2 : {1 2 3 }
    c3 : {1 2 3 }

## 参照

- N2679 Initializer Lists for Standard Containers(Revision 1)
  - (3)の経緯となる提案文書
- N4258 Cleaning-up noexcept in the Library, Rev 3
  - `noexcept` 追加の経緯となる提案文書
- P3372R3 constexpr containers and adaptors