GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::unordered_set::equal_range - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. unordered_set
  3. unordered_set
  4. equal_range

最終更新日時: 2026年09月11日 13時06分31秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<unordered_set>

std::unordered_set::equal_range(C++11)

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_set コンテナではキーの重複は無いため、この範囲は最大一つの要素を含む。

もし指定されたキーがコンテナ内のどのキーともマッチしなかった場合、戻り値の範囲は長さ 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_set<string> s;に対してs.equal_range("key");のようにstring型のキーを持つ連想コンテナの検索インタフェースに文字列リテラルを渡した際、stringの一時オブジェクトが作られないようにできる。詳細はstd::hashクラスのページを参照。

テンプレートパラメータ制約

  • (3), (4) : Pred::is_transparent型およびHash::is_transparent型が定義されていること

戻り値

合致する要素の範囲を表す pair オブジェクトを返す。pair::first は 範囲の下境界にあたり、pair::second は 範囲の上境界にあたる。

そのような要素がない場合には、make_pair(end(), end())を返す。

計算量

  • 平均: 定数時間
  • 最悪: size について線形時間

備考

  • unordered_set の場合には、等価なキーはたかだか1つであるため、find() ほど有用ではないと考えられる

例

#include <iostream>
#include <string>
#include <unordered_set>
#include <algorithm>
#include <iterator>

template <class Iter>
void print_range(const std::string& label, Iter begin, Iter it1, Iter it2, std::ostream& os = std::cout)
{
  os << label << ": " << "[" << std::distance(begin, it1) << ", "  << std::distance(begin, it2) << ")" << std::endl;
}

int main()
{
  std::unordered_set<int> us{ 1, 3, 5, 7, 9, };

  std::copy(us.begin(), us.end(), std::ostream_iterator<int>(std::cout, ", "));
  std::cout << std::endl;

  auto p1 = us.equal_range(5);
  print_range("equal_range(5)", us.begin(), p1.first, p1.second);

  auto p2 = us.equal_range(8);
  print_range("equal_range(8)", us.begin(), p2.first, p2.second);
}

出力例

9, 7, 5, 3, 1,
equal_range(5): [2, 3)
equal_range(8): [5, 5)

バージョン

言語

  • C++11

処理系

  • Clang: 3.0 ✅, 3.1 ✅
  • GCC: 4.4.7 ✅, 4.5.3 ✅, 4.6.3 ✅, 4.7.0 ✅
  • Visual C++: ?

関連項目

名前 説明
find 指定したキーの位置を検索
count 指定したキーの要素数を取得

参照

  • P0919R3 Heterogeneous lookup for unordered containers
  • P3372R3 constexpr containers and adaptors
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.