std::unordered_set<Key,Hash,KeyEqual,Allocator>::count
From cppreference.com
< cpp | container | unordered set
| size_type count( const Key& key ) const; |
(1) | (C++11以降) |
| template< class K > size_type count( const K& x ) const; |
(2) | (C++20以降) |
1) 指定された引数 key と比較して等しいキーを持つ要素の数を返します。このコンテナは重複を許可しないため、値は 0 または 1 のいずれかになります。
2) 指定された引数 x と同等に比較される要素の数を返します。このオーバーロードは、Hash::is_transparent および KeyEqual::is_transparent が有効で、それぞれが型を示している場合にのみオーバーロード解決に参加します。これは、そのような
Hash が K と Key の両方の型で呼び出し可能であり、KeyEqual が透過的であることを前提としており、これにより Key のインスタンスを構築せずにこの関数を呼び出すことができます。目次 |
[編集] パラメータ
| key | - | カウントする要素のキー値 |
| x | - | キーと透過的に比較できる任意の型の値 |
[編集] 返り値
1) キー key を持つ要素の数。値は 1 または 0 です。
2) x と同等に比較されるキーを持つ要素の数。
[編集] 計算量
平均的には定数時間、最悪の場合はコンテナのサイズに線形時間。
[編集] 注記
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_generic_unordered_lookup |
201811L |
(C++20) | unordered 連想コンテナにおける異種比較検索、オーバーロード (2) |
[編集] 例
このコードを実行
#include <algorithm> #include <iostream> #include <unordered_set> int main() { std::unordered_set set{2, 7, 1, 8, 2, 8, 1, 8, 2, 8}; std::cout << "The set is: "; for (int e : set) std::cout << e << ' '; const auto [min, max] = std::ranges::minmax(set); std::cout << "\nNumbers from " << min << " to " << max << " that are in the set: "; for (int i{min}; i <= max; ++i) if (set.count(i) == 1) std::cout << i << ' '; std::cout << '\n'; }
実行結果の例
The set is: 8 1 7 2 Numbers from 1 to 8 that are in the set: 1 2 7 8
[編集] 関連項目
| 特定のキーを持つ要素を検索する (公開メンバ関数) | |
| (C++20) |
コンテナが特定のキーを持つ要素を含むか確認する (公開メンバ関数) |
| 特定のキーに一致する要素の範囲を返す (公開メンバ関数) |