std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::equal_range - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
(1) | (C++11以上) |
|
|
(2) | (C++11以上) |
|
|
(3) | (C++20以上) |
|
|
(4) | (C++20以上) |
1,2) コンテナ内のキー key を持つすべての要素を含む範囲を返します。 範囲は2つのイテレータで示されます。 ひとつは所望の範囲の最初の要素を指し、もうひとつはその範囲の最後の要素の次を指します。
3,4) x と同等なキーを持つコンテナ内のすべての要素を含む範囲を返します。 このオーバーロードは、Hash::is_transparent と KeyEqual::is_transparent が有効であり、それらが型を表す場合にのみ、オーバーロード解決に参加します。 これは、そのような Hash が K と Key の両方の型で呼び出し可能であり、 KeyEqual が透過的であると仮定します。 これらは、 Key のインスタンスを構築することなくこの関数を呼ぶことを可能とします。
引数
| key | - | 要素と比較するキーの値 |
| x | - | キーと透過的に比較可能な任意の型の値 |
戻り値
所望の範囲を示す1組のイテレータを持つ std::pair。 そのような要素がなければ、ペアの両方の要素として終端イテレータ (end() を参照) が返されます。
計算量
平均的なケースではキー key を持つ要素の数に比例。 ワーストケースではコンテナのサイズに比例。
例
#include <iostream> #include <unordered_map> int main() { std::unordered_map<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'; } }
出力: