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

履歴 編集

function
<set>

# std::set::operator=

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

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

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

## 概要

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

## 効果

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

## 戻り値

`*this`

## 事後条件

- (1) : `*this == x`
- (2) : `*this`は元々の`x`と等値となる
- (3) : `*this == set{init}`

## 計算量

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

## 例

    #include <iostream>
    #include <set>

    int main()
    {
      int values[] = { 5, 2, 4, 1, 0, 0, 9 };
      std::set<int> c1(values, values + 7);
      std::set<int> c2;

      c2 = c1;
      c1 = std::set<int>();

      std::cout << "Size of c1: " << c1.size() << std::endl;
      std::cout << "Size of c2: " << c2.size() << std::endl;
    }

### 出力

    Size of c1: 0
    Size of c2: 6

## 関連項目

名前 | 説明
--- | ---
`insert` | 要素を挿入する
`set` | コンストラクタ

## 参照

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