std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: equal_range
From cppreference.net
<
cpp
|
container
|
unordered multiset
|
std::
pair
<
iterator, iterator
>
equal_range
(
const
Key
&
key
)
;
|
(1) | (C++11以降) |
|
std::
pair
<
const_iterator, const_iterator
>
equal_range
(
const
Key
&
key
)
const
;
|
(2) | (C++11以降) |
|
template
<
class
K
>
std:: pair < iterator, iterator > equal_range ( const K & x ) ; |
(3) | (C++20以降) |
|
template
<
class
K
>
std:: pair < const_iterator, const_iterator > equal_range ( const K & x ) const ; |
(4) | (C++20以降) |
1,2)
コンテナ内のキー
key
を持つ全ての要素を含む範囲を返します。範囲は2つのイテレータによって定義され、最初のイテレータは目的の範囲の最初の要素を指し、2番目のイテレータは範囲の最後の要素の次を指します。
3,4)
キーが
x
と等価なコンテナ内の全要素を含む範囲を返す。このオーバーロードは、
Hash
と
KeyEqual
が両方とも
透過的(transparent)
である場合にのみオーバーロード解決に参加する。これは、そのような
Hash
が
K
型と
Key
型の両方で呼び出し可能であり、
KeyEqual
が透過的であることを前提としており、これらが組み合わさることで
Key
のインスタンスを構築せずにこの関数を呼び出すことが可能となる。
目次 |
パラメータ
| key | - | 要素と比較するキー値 |
| x | - | キーと透過的に比較可能な任意の型の値 |
戻り値
std::pair 要求範囲を定義する一組のイテレータを含む。そのような要素が存在しない場合、終端( end() 参照)イテレータがペアの両要素として返される。
計算量
キーを持つ要素の数に対して平均的に線形時間、最悪ケースではコンテナのサイズに対して線形時間。 key
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_generic_unordered_lookup
|
201811L
|
(C++20) | 非順序連想コンテナにおける 異種比較ルックアップ 、オーバーロード (3,4) |
例
指定された文字列の文字頻度を推定します。
このコードを実行
#include <iostream> #include <iterator> #include <string> #include <unordered_set> int main() { std::string sentence{"cppreference.net"}; std::cout << "The sentence: " << sentence << '\n'; std::unordered_multiset<char> sequence; for (char x : sentence) sequence.insert(x); std::cout << "The sequence: { "; for (char x : sequence) std::cout << x << ' '; std::cout << "}\n" "Symbol:Frequency: "; for (auto it = sequence.begin(); it != sequence.end();) { if (auto [first, last] = sequence.equal_range(*it); first != last) { std::cout << *first << ":" << std::distance(first, last) << " "; it = last; } else ++it; } }
出力例:
The sentence: cppreference.net
The sequence: { m o c c c p p r r e e e e f n . }
Symbol:Frequency: m:1 o:1 c:3 p:2 r:2 e:4 f:1 n:1 .:1
関連項目
|
指定されたキーを持つ要素を検索
(公開メンバ関数) |
|
|
(C++20)
|
コンテナが指定されたキーを持つ要素を含むかどうかをチェック
(公開メンバ関数) |
|
指定されたキーに一致する要素の数を返す
(公開メンバ関数) |
|
|
指定されたキーに一致する要素の範囲を返す
(関数テンプレート) |