public member function
<set>

std::set::equal_range

pair<iterator,iterator> equal_range (const value_type& val) const;
pair<const_iterator,const_iterator> equal_range (const value_type& val) const;pair<iterator,iterator>             equal_range (const value_type& val);
获取相等元素的范围
返回一个包含容器中所有等同于 val 的元素的范围的边界。

由于 set 容器中的所有元素都是唯一的,因此返回的范围最多只包含一个元素。

如果未找到匹配项,则返回的范围长度为零,两个迭代器都指向根据容器的 内部比较对象key_comp)被认为排在 val 之后的第一个元素。

set 的两个元素被认为是等效的,如果容器的 比较对象 返回false自反地(即,无论元素以何种顺序作为参数传递)。

参数

val
要搜索的值。
成员类型value_type是容器中元素的类型,在 set 中定义为其第一个模板参数的别名(T).

返回值

该函数返回一个 pair,其成员pair::first是范围的下界(与 lower_bound 相同),并且pair::second是上界(与 upper_bound 相同)。

成员类型iteratorconst_iterator是指向元素的 双向迭代器 类型。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// set::equal_elements
#include <iostream>
#include <set>

int main ()
{
  std::set<int> myset;

  for (int i=1; i<=5; i++) myset.insert(i*10);   // myset: 10 20 30 40 50

  std::pair<std::set<int>::const_iterator,std::set<int>::const_iterator> ret;
  ret = myset.equal_range(30);

  std::cout << "the lower bound points to: " << *ret.first << '\n';
  std::cout << "the upper bound points to: " << *ret.second << '\n';

  return 0;
}

the lower bound points to: 30
the upper bound points to: 40


复杂度

size 的对数复杂度。

迭代器有效性

没有变化。

数据竞争

访问容器(const 和非 const 版本都不会修改容器)。
并发访问set的元素是安全的。

异常安全

强保证:如果抛出异常,容器没有发生变化。

另见