pair<iterator, iterator>
equal_range(const key_type& x); // (1) C++11
constexpr pair<iterator, iterator>
equal_range(const key_type& x); // (1) C++26
pair<const_iterator, const_iterator>
equal_range(const key_type& x) const; // (2) C++11
constexpr pair<const_iterator, const_iterator>
equal_range(const key_type& x) const; // (2) C++26
template <class K>
pair<iterator, iterator>
equal_range(const K& k); // (3) C++20
template <class K>
constexpr pair<iterator, iterator>
equal_range(const K& k); // (3) C++26
template <class K>
pair<const_iterator, const_iterator>
equal_range(const K& k) const; // (4) C++20
template <class K>
constexpr pair<const_iterator, const_iterator>
equal_range(const K& k) const; // (4) C++26
概要
コンテナ内の、指定されたキーと等しい全てのキー要素を含む範囲の境界を返す。unordered_map コンテナではキーの重複は無いため、この範囲は最大一つの要素を含む。
もし指定されたキーがコンテナ内のどのキーともマッチしなかった場合、戻り値の範囲は長さ 0 になり、両方のイテレータは end を指す。
- (1) : 非
constなthisに対してキーxを検索し、合致する全ての要素を含む範囲を取得する
- (2) :
constなthisに対してキーxを検索し、合致する全ての要素を含む範囲を取得する
- (3) : 非
constなthisに対してキーkを透過的に検索し、合致する全ての要素を含む範囲を取得する
- (4) :
constなthisに対してキーkを透過的に検索し、合致する全ての要素を含む範囲を取得する
(3), (4)の透過的な検索は、Pred::is_transparentおよびHash::is_transparentが定義される場合に有効になる機能であり、例としてunordered_map<string, int> m;に対してm.equal_range("key");のようにstring型のキーを持つ連想コンテナの検索インタフェースに文字列リテラルを渡した際、stringの一時オブジェクトが作られないようにできる。詳細はstd::hashクラスのページを参照。
パラメータ
x : 比較されるキー値。key_type はメンバ型であり、unordered_map コンテナ内で Key の別名として定義される。ここで Key は最初のテンプレートパラメータである。
k : 検索するキー。key_typeと透過的に比較可能な型K型のキーである。
テンプレートパラメータ制約
- (3), (4) :
Pred::is_transparent型およびHash::is_transparent型が定義されていること
戻り値
合致する要素の範囲を表す pair オブジェクトを返す。pair::first は 範囲の下境界にあたり、pair::second は 範囲の上境界にあたる。
そのような要素がない場合には、make_pair(end(), end())を返す。
iterator はメンバ型であり unordered_map において双方向イテレータとして定義される。
計算量
- 平均: 定数時間
- 最悪:
size について線形時間
備考
例
出力例
low: 3 c
up: 4 d
low:1
up:1
バージョン
言語
処理系
関連項目
| 名前 |
説明 |
count |
指定したキーにマッチする要素の数を返す |
find |
指定したキーで要素を探す |
参照