std::set::equal_range

来源:互联网 发布:电动车拉客软件 编辑:程序博客网 时间:2024/05/22 12:12


pair<const_iterator,const_iterator> equal_range (const value_type& val) const;pair<iterator,iterator> equal_range (const value_type& val);

set 类模板中的公共成员函数。 返回值匹配给定搜索值的元素组成的范围。

因为 set 容器中所有元素都是唯一的,所以返回的范围中最多只有一个元素。

如果没有发现匹配的元素,返回范围的长度将为 0,且首尾两个迭代器都将指向按内部比较对象的排序规则排在 val 之后的第一个元素。

如果传递给容器内部比较对象的两个元素使得比较对象返回 false,且该特性是自反的(Reflexive)(即两个参数不管以什么顺序传递给比较对象,都返回 false),那么两个主键等价。

参数及返回值



val:需要被搜索的值。

成员类型 val_type 是存储在当前容器中的元素的类型,作为 set 实例化时第一个模板参数(T)的别名而存在。

返回

返回一个二元组。

该二元组由两个指向容器中元素的迭代器组成,第一个迭代器与 set::lower_bound 传入 val 返回的迭代器相同,第二个迭代器与 set::upper_bound 传入 val 返回的迭代器相同。

如果 set 对象是 const 限定的,那么函数返回的二元组由 const_iterator 组成,否则返回的二元组由 iterator 组成。

成员类型 iterator 及 const_iterator 是指向容器中元素的双向迭代器的类型。


#include <set>#include <iostream>namespace ClassFoo{void SetEqualRangeExample1() {    using namespace std;    set<int> foo1;    pair<set<int>::iterator,set<int>::iterator> it;    foo1.insert(1);    foo1.insert(3);    foo1.insert(6);    foo1.insert(9);    foo1.insert(12);    it = foo1.equal_range(6);    cout << "foo1.equal_range(6):"        << *(it.first) << " " << *(it.second) << endl ;    it = foo1.equal_range(7);    cout << "foo1.equal_range(7):"        << *(it.first) << " " << *(it.second) << endl ;}}int main( ){    ClassFoo::SetEqualRangeExample1();    return 0;}

输出

foo1.equal_range(6):6 9
foo1.equal_range(7):9 9​