公共成员函数
<map>

std::map::equal_range

pair<const_iterator,const_iterator> equal_range (const key_type& k) const;pair<iterator,iterator>             equal_range (const key_type& k);
获取相等元素的范围
返回容器中所有键等于 k 的元素的范围的边界。

由于 map 容器中的元素具有唯一的键,因此返回的范围最多包含一个元素。

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

当容器的 比较对象 返回false时,两个 被视为等价(即,无论键按何种顺序作为参数传递)。

参数

k
要搜索的键。
成员类型key_type是容器中元素的类型,在map中定义为其第一个模板参数().

返回值

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

如果 map 对象是 const 限定的,则该函数返回一个 pairconst_iterator。否则,它返回一个 pairiterator.

成员类型iteratorconst_iterator是指向元素的(类型为value_type).
请注意,value_typemap 容器中,其本身也是一个 pair 类型pair<const key_type, mapped_type>.

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// map::equal_range
#include <iostream>
#include <map>

int main ()
{
  std::map<char,int> mymap;

  mymap['a']=10;
  mymap['b']=20;
  mymap['c']=30;

  std::pair<std::map<char,int>::iterator,std::map<char,int>::iterator> ret;
  ret = mymap.equal_range('b');

  std::cout << "lower bound points to: ";
  std::cout << ret.first->first << " => " << ret.first->second << '\n';

  std::cout << "upper bound points to: ";
  std::cout << ret.second->first << " => " << ret.second->second << '\n';

  return 0;
}

lower bound points to: 'b' => 20
upper bound points to: 'c' => 30


复杂度

size 的对数复杂度。

迭代器有效性

没有变化。

数据竞争

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

异常安全

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

另见