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

履歴 編集

function
<unordered_set>

std::unordered_multiset::count(C++11)

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 指定したキーの範囲を取得

参照