equal_range
是set
中的一个成员函数,它返回一个pair
对象,其中包含两个迭代器。这两个迭代器表示一个范围,其中第一个迭代器指向set
中第一个不小于给定值的元素,而第二个迭代器指向第一个大于给定值的元素。如果给定值存在于set
中,那么这个范围将包括所有相同的元素。- #include
- using namespace std;
- int main(){
- set<int,less<int>>s1;
- set<int,greater<int>>s2;
- s1.insert(1);
- s1.insert(5);
- s1.insert(3);
- s2.insert(1);
- s2.insert(5);
- s2.insert(3);
- set<int>::iterator it;
- s1.insert(6);
- s1.insert(8);
- s1.insert(7);
- s1.insert(10);
-
- it=s1.lower_bound(6);
- cout<<*it<
//6 -
- it=s1.upper_bound(6);
- cout<<*it<
//7 -
- cout<<"s1:";
- for(it=s1.begin();it!=s1.end();it++)
- cout<<*it<<" ";//1 3 5 6 7 8 10
- cout<
-
- pair
int>::iterator,set<int>::iterator>p=s1.equal_range(6); - cout<<*(p.first)<
//first是pair队组中的第一个元素(6) - cout<<*(p.second)<
//second是pair队组中的第二个元素(7) -
-
-
-
-
- return 0;
- }
2.如果将s1.equal_range(6)
中的6改成12,会发生以下情况:
使用equal_range(12)
将不会在set
中找到值为12的元素,因为12不在集合中,并且它比集合中的任何元素都大。在这种情况下,equal_range
会返回一对迭代器,其中第一个迭代器指向set
结束(end()
),因为没有元素大于或等于12,同时第二个迭代器也指向set
结束(end()
),因为没有元素比12更大。