std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::count
From cppreference.com
< cpp | container | unordered multimap
| 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 と等価なキーを持つ要素の数を返します。
2) 指定された引数 x と同等に比較される要素の数を返します。このオーバーロードは、Hash::is_transparent および KeyEqual::is_transparent が有効で、それぞれが型を示している場合にのみオーバーロード解決に参加します。これは、そのような
Hash が K と Key の両方の型で呼び出し可能であり、KeyEqual が透過的であることを前提としており、これにより Key のインスタンスを構築せずにこの関数を呼び出すことができます。目次 |
[編集] パラメータ
| key | - | カウントする要素のキー値 |
| x | - | キーと透過的に比較できる任意の型の値 |
[編集] 返り値
1) キー key を持つ要素の数。
2) x と同等に比較されるキーを持つ要素の数。
[編集] 計算量
平均的には、キー key を持つ要素の数に線形、最悪の場合はコンテナのサイズに線形。
[編集] 注記
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_generic_unordered_lookup |
201811L |
(C++20) | unordered 連想コンテナにおける異種比較検索、オーバーロード (2) |
[編集] 例
このコードを実行
#include <iostream> #include <string> #include <unordered_map> int main() { std::unordered_multimap<int, std::string> dict = { {1, "one"}, {6, "six"}, {3, "three"} }; dict.insert({4, "four"}); dict.insert({5, "five"}); dict.insert({6, "six"}); std::cout << "dict: { "; for (auto const& [key, value] : dict) std::cout << '[' << key << "]=" << value << ' '; std::cout << "}\n\n"; for (int i{1}; i != 8; ++i) std::cout << "dict.count(" << i << ") = " << dict.count(i) << '\n'; }
実行結果の例
dict: { [5]=five [4]=four [1]=one [6]=six [6]=six [3]=three }
dict.count(1) = 1
dict.count(2) = 0
dict.count(3) = 1
dict.count(4) = 1
dict.count(5) = 1
dict.count(6) = 2
dict.count(7) = 0[編集] 関連項目
| 特定のキーを持つ要素を検索する (公開メンバ関数) | |
| (C++20) |
コンテナが特定のキーを持つ要素を含むか確認する (公開メンバ関数) |
| 特定のキーに一致する要素の範囲を返す (公開メンバ関数) |