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
是指向容器中元素的双向迭代器的类型。
- ClassFoo 编辑于
#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; }
输出: