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

履歴 編集

function
<unordered_set>

std::unordered_set::contains(C++20)

bool contains(const key_type& x) const; // (1)

template <class K>
bool contains(const K& k) const;        // (2)

概要

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

  • (1) : キーxを検索し、合致する要素が含まれるかを判定する
  • (2) : キーkを透過的に検索し、合致する要素が含まれるかを判定する

(2)の透過的な検索は、Hash::transparent_key_equalが定義される場合に有効になる機能であり、例としてunordered_set<string> s;に対してs.contains("key");のようにstring型のキーを持つ連想コンテナの検索インタフェースに文字列リテラルを渡した際、stringの一時オブジェクトが作られないようにできる。詳細はstd::hashクラスのページを参照。

テンプレートパラメータ制約

  • (2) : Hash::transparent_key_equal型が定義されていること

戻り値

xkを共通の変数aであるとして、以下と等価:

return find(a) != end();

計算量

  • 平均: 定数時間
  • 最悪: size について線形時間

#include <iostream>
#include <unordered_set>

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

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

出力

contain

バージョン

言語

  • C++20

処理系

参照