• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <unordered_set>

    std::unordered_multiset::count

    size_type count(const key_type& x) const; // (1) C++11
    
    template <class K>
    size_type count(const K& k) const;        // (2) C++20
    

    概要

    キーを検索し、コンテナ内に見つかった要素の数を返す。

    • (1) : キーxを検索し、合致する要素数を取得する
    • (2) : キーkを透過的に検索し、合致する要素数を取得する

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

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

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

    戻り値

    指定されたキーと同じ値のキーの要素が見つかった要素数を返す。

    メンバ型 size_type は符号なし整数型である。

    例外

    投げない。

    計算量

    xkを共通の変数aであるとして、

    • 平均: O(count(a))
    • 最悪: size について線形時間

    #include <iostream>
    #include <unordered_set>
    #include <algorithm>
    #include <iterator>
    
    int main()
    {
      std::unordered_multiset<int> ums{ 1, 3, 5, 7, 9, 1, 3, 5, 7, 9, };
    
      std::copy(ums.begin(), ums.end(), std::ostream_iterator<int>(std::cout, ", "));
      std::cout << std::endl;
    
      auto c1 = ums.count(5);
      std::cout << "count of 5:" << c1 << std::endl;
    
      auto c2 = ums.count(8);
      std::cout << "count of 8:" << c2 << std::endl;
    }
    

    出力

    9, 9, 7, 7, 5, 5, 3, 3, 1, 1,
    count of 5:2
    count of 8:0
    

    バージョン

    言語

    • C++11

    処理系

    関連項目

    名前 説明
    find 指定したキーの位置を検索
    equal_range 指定したキーの範囲を取得

    参照