• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <flat_set>

    std::flat_multiset::contains

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

    概要

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

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

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

    • (2) : key_compare::is_transparentが妥当な式であること

    戻り値

    以下と等価:

    return find(x) != end();
    

    計算量

    対数時間

    備考

    • (2) :
      • is_transparentは、標準ライブラリのstd::lessstd::greaterといった関数オブジェクトの、voidに対する特殊化で定義される。それ以外のテンプレートパラメータでis_transparentが定義されないのは、互換性のためである。
      • これらのオーバーロードは、flat_multiset<string>のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。

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

    出力

    contain
    

    バージョン

    言語

    • C++23

    処理系