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

履歴 編集

function
<unordered_set>

std::unordered_set::operator=(C++11)

unordered_set& operator=(const unordered_set& v);          // (1)
unordered_set& operator=(unordered_set&& rv);              // (2)
unordered_set& operator=(unordered_set&& x)
  noexcept(allocator_traits<Allocator>::is_always_equal::value
            && is_nothrow_move_assignable<Hash>::value
            && is_nothrow_move_assignable<Container_move_assign>::value); // (2) C++17
unordered_set& operator=(initializer_list<value_type> il); // (3)

概要

unordered_set オブジェクトを代入する

要件

  • (1)、および、(3) の形式の場合、以下の条件を満たすこと。

    • value_type はこのコンテナに対してコピー挿入可能(CopyInsertable)であること。
    • value_type はコピー代入可能(CopyAssignable)であること。
  • (2) の形式の場合、std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::valuefalse であれば、以下の条件を満たすこと。

    • value_type はこのコンテナに対してムーブ挿入可能(MoveInsertable)であること。
    • value_type はムーブ代入可能(MoveAssignable)であること。

効果

  • (1) : v の全ての要素がコピー代入される。ハッシュ関数オブジェクト、キー比較用関数オブジェクト、max_load_factor() の値もコピーされる。 アロケータオブジェクトは、std::allocator_traits<allocator_type>::propagate_on_container_copy_assignment::valuetrue の場合に限りコピーされる。

  • (2) : ハッシュ関数オブジェクト、キー比較用関数オブジェクトの値はムーブされる。 max_load_factor() の値はコピーされる。 アロケータオブジェクトは、std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::valuetrue の場合に限りムーブされる。コンテナ内に元々存在していた要素は、代入されるか、破棄される(デストラクタが呼び出される)。

  • (3) : イテレータ範囲 [il.begin(), il.end()) がコピー代入される。 コンテナ内に元々存在していた要素は、代入されるか、破棄される(デストラクタが呼び出される)。

事後条件

以下では構築されたオブジェクトを u とする。

  • (1) : u == v
  • (2) : u == 代入前の rv
  • (3) : -

戻り値

*this

計算量

  • (1) : 平均的には O(n)、ここで、n = v.size()。最悪のケースでは O(n2)
  • (2) : 線形時間。
  • (3) : 代入対象を aa の型を X とすると、a = X(il) と同様。(備考参照)

備考

  • (3) の形式の場合、計算量は a = X(il) と同様となっているが、効果が a = X(il) と同様なわけではない。(ハッシュ関数オブジェクト、キー比較用関数オブジェクト、アロケータオブジェクト、max_load_factor() 等が異なる)

バージョン

言語

  • C++11

処理系

関連項目

名前 説明
(constructor) コンストラクタ
(destructor) デストラクタ

参照