STL的pair知识点大全

发布于:2024-06-07 ⋅ 阅读:(139) ⋅ 点赞:(0)

1:se't容器set.equal range(elem)


1.上限是闭区间,下限是开区间,如[beg,end)返回容器中与elem相等的上下限的两个迭代器,pair中。函数返回两个迭代器,而这两个迭代器被封装在pair中。

pair< set<int>::iterator,set<int>::iterator >pairIt.equal_range(5);

2. pair译为对组,可以将两个值视为一个单元。如T1为int,T2为float。T1,T2也可以是自定义类型。

3. pair<T1,T2>存放的两个值的类型(可以不相同),可以不一样pair.first是pair里面的第一个值,是T1类型。
◎pair.second是pair里面的第二个值,是T2类型。

4.函数equal_rangeset中的一个成员函数,它返回一个pair对象,其中包含两个迭代器。这两个迭代器表示一个范围,其中第一个迭代器指向set中第一个不小于给定值的元素,而第二个迭代器指向第一个大于给定值的元素。如果给定值存在于set中,那么这个范围将包括所有相同的元素。

#include<bits/stdc++.h>
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<<endl;//6

    it=s1.upper_bound(6);
    cout<<*it<<endl;//7

    cout<<"s1:";
    for(it=s1.begin();it!=s1.end();it++)
        cout<<*it<<" ";//1 3 5 6 7 8 10
    cout<<endl;

    pair<set<int>::iterator,set<int>::iterator>p=s1.equal_range(6);
    cout<<*(p.first)<<endl;//first是pair队组中的第一个元素(6)
    cout<<*(p.second)<<endl;//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更大。


网站公告

今日签到

点亮在社区的每一天
去签到