std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: equal_range
From ja.cppreference.net
<
cpp
|
container
|
unordered multimap
|
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
が両方とも
透過的
である場合にのみオーバーロード解決に参加します。これは、そのような
Hash
が
K
型と
Key
型の両方で呼び出し可能であり、
KeyEqual
が透過的であることを前提としており、これらが組み合わさることで
Key
のインスタンスを構築せずにこの関数を呼び出すことが可能になります。
目次パラメータ
戻り値std::pair 要求範囲を定義する一組のイテレータを含むペア。そのような要素が存在しない場合、終端( end() 参照)イテレータがペアの両要素として返される。 計算量キーを持つ要素の数に対して平均的なケースでは線形時間、 key コンテナのサイズに対して最悪ケースでは線形時間。 注記
例
このコードを実行
#include <iostream> #include <unordered_map> int main() { std::unordered_multimap<int,char> map = {{1, 'a'},{1, 'b'},{1, 'd'},{2, 'b'}}; auto range = map.equal_range(1); for (auto it = range.first; it != range.second; ++it) std::cout << it->first << ' ' << it->second << '\n'; } 出力: 1 a 1 b 1 d 関連項目
|