• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <unordered_set>

    std::unordered_multiset::contains

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

    概要

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

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

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

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

    • (2) : Pred::is_transparent型およびHash::is_transparent型が定義されていること

    戻り値

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

    return find(a) != end();
    

    計算量

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

    #include <iostream>
    #include <unordered_set>
    
    int main()
    {
      std::unordered_multiset<int> ums = {1, 2, 3};
    
      // キー2の要素が含まれているか
      if (ums.contains(2)) {
        std::cout << "contain" << std::endl;
      }
      else {
        std::cout << "doesn't contain" << std::endl;
      }
    }
    

    出力

    contain
    

    バージョン

    言語

    • C++20

    処理系

    参照