最終更新日時(UTC):
が更新

履歴 編集

function
<deque>

std::deque::operator=

deque& operator=(const deque& x);           // (1) C++03
deque& operator=(deque&& x);                // (2) C++11
deque& operator=(deque&& x)
  noexcept(allocator_traits<Allocator>::is_always_equal::value);  // (2) C++17
deque& operator=(initializer_list<T> init); // (3) C++11

概要

  • (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>

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 }

参照