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

履歴 編集

function
<set>

# std::set::contains(C++20)

    bool contains(const key_type& x) const;           // (1) C++20
    constexpr bool contains(const key_type& x) const; // (1) C++26

    template <class K>
    bool contains(const K& x) const;           // (2) C++20
    template <class K>
    constexpr bool contains(const K& x) const; // (2) C++26

## 概要

指定されたキー`x`に一致する要素がコンテナに含まれているかを判定する。

- (1) : クラスのテンプレートパラメータ`key_type`型のキーを受け取る
- (2) : `key_type`と比較可能な`K`型のキーを受け取る

## 戻り値

以下と等価：

    return find(x) != end();

## 計算量

対数時間

## 例

    #include <iostream>
    #include <set>

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

      // キー2の要素が含まれているか
      if (s.contains(2)) {
        std::cout << "contain" << std::endl;
      }
      else {
        std::cout << "doesn't contain" << std::endl;
      }
    }

### 出力

    contain

## バージョン

### 言語

- C++20

### 処理系

- Clang:
- GCC: 9.1 ✅
- Visual C++: 2019 Update 1 ✅

## 参照

- P0458R2 Checking for Existence of an Element in Associative Containers
- P3372R3 constexpr containers and adaptors