• STL的pair知识点大全


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


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

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

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

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

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

    1. #include
    2. using namespace std;
    3. int main(){
    4. set<int,less<int>>s1;
    5. set<int,greater<int>>s2;
    6. s1.insert(1);
    7. s1.insert(5);
    8. s1.insert(3);
    9. s2.insert(1);
    10. s2.insert(5);
    11. s2.insert(3);
    12. set<int>::iterator it;
    13. s1.insert(6);
    14. s1.insert(8);
    15. s1.insert(7);
    16. s1.insert(10);
    17. it=s1.lower_bound(6);
    18. cout<<*it<//6
    19. it=s1.upper_bound(6);
    20. cout<<*it<//7
    21. cout<<"s1:";
    22. for(it=s1.begin();it!=s1.end();it++)
    23. cout<<*it<<" ";//1 3 5 6 7 8 10
    24. cout<
    25. pairint>::iterator,set<int>::iterator>p=s1.equal_range(6);
    26. cout<<*(p.first)<//first是pair队组中的第一个元素(6)
    27. cout<<*(p.second)<//second是pair队组中的第二个元素(7)
    28. return 0;
    29. }

    2.如果将s1.equal_range(6)中的6改成12,会发生以下情况:

    使用equal_range(12)将不会在set中找到值为12的元素,因为12不在集合中,并且它比集合中的任何元素都大。在这种情况下,equal_range会返回一对迭代器,其中第一个迭代器指向set结束(end()),因为没有元素大于或等于12,同时第二个迭代器也指向set结束(end()),因为没有元素比12更大。

  • 相关阅读:
    SQL查询优化---子查询优化、排序分组优化、覆盖索引优化
    UI自动化
    在IDEA中的DeBug调试技巧
    【计算机思维】01.计算机思维框架
    【Oracle】Oracle系列之十二--视图、记录、同义词、序列
    【Python】numpy矩阵运算大全
    Java守护线程
    植物大战僵尸杂交版v2.1最新直装版,苹果+安卓+PC+防闪退工具+修改工具+高清工具+通关存档整合包更新
    Springboot学习笔记——2
    spring-cloud-gateway服务网关学习
  • 原文地址:https://blog.csdn.net/2301_79724394/article/details/139308847