最終更新日時(UTC): 2026年03月21日 14時12分53秒
Raclamusi が更新

履歴 編集

function template
<flat_set>

# std::swap (非メンバ関数)(C++23)

    namespace std {
      template <class Key, class Compare, class KeyContainer>
      void
        swap(flat_set<Key, Compare, KeyContainer>& x,
             flat_set<Key, Compare, KeyContainer>& y); // (1) C++23
      template <class Key, class Compare, class KeyContainer>
      constexpr void
        swap(flat_set<Key, Compare, KeyContainer>& x,
             flat_set<Key, Compare, KeyContainer>& y)
          noexcept(noexcept(x.swap(y)));               // (1) C++26
    }

## 概要

2つの `flat_set` オブジェクトを入れ替える。

## 効果

`x.swap(y)`

## 例

    #include <flat_set>
    #include <iostream>

    template <class Set>
    void print(const char* name, const Set& s)
    {
      std::cout << name << " : {";

      bool first = true;

      for (const auto& x : s) {
        if (first) {
          first = false;
        }
        else {
          std::cout << ", ";
        }
        std::cout << x;
      }
      std::cout << "}" << std::endl;
    }

    int main()
    {
      std::flat_set<int> fs1 = {10, 20, 30};

      std::flat_set<int> fs2 = {5, 15};

      // fs1とfs2を入れ替える
      std::swap(fs1, fs2);

      ::print("fs1", fs1);
      ::print("fs2", fs2);
    }

### 出力

    fs1 : {5, 15}
    fs2 : {10, 20, 30}

## バージョン

### 言語

- C++23

### 処理系

- Clang: ??
- GCC: ??
- Visual C++: ??

## 参照

- P3372R3 constexpr containers and adaptors
- P3567R2 flat_meow Fixes
  - C++26で、`noexcept`指定が条件付きに変更された。メンバ関数`swap()`の`noexcept`条件に従う