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
は符号なし整数型である。
例外
投げない。
計算量
x
とk
を共通の変数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;
}
19
#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
処理系
- Clang: 3.1 ✅
- GCC: 4.7.0 ✅
- ICC: ?
- Visual C++: ?
関連項目
名前 | 説明 |
---|---|
find |
指定したキーの位置を検索 |
equal_range |
指定したキーの範囲を取得 |