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

履歴 編集

function
<unordered_set>

std::unordered_set::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

概要

キーを検索し、コンテナ内に見つかった要素の数を返す。unordered_set コンテナはキーの重複を許さないため、この関数は実際には要素が見つかったときに 1 を、そうでないときに 0 を返す。

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

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

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

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

戻り値

指定されたキーと同じ値のキーの要素が見つかったなら 1、そうでないなら 0を返す。

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

例外

投げない。

計算量

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

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

#include <iostream>
#include <unordered_set>
#include <algorithm>
#include <iterator>

int main()
{
  std::unordered_set<int> us{ 1, 3, 5, 7, 9, };

  std::copy(us.begin(), us.end(), std::ostream_iterator<int>(std::cout, ", "));
  std::cout << std::endl;

  auto c1 = us.count(5);
  std::cout << "count of 5:" << c1 << std::endl;

  auto c2 = us.count(8);
  std::cout << "count of 8:" << c2 << std::endl;
}

出力

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

バージョン

言語

  • C++11

処理系

関連項目

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

参照