• 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更大。

  • 相关阅读:
    一款提高测试、验证和开发效率的测试管理工具SolarManager
    软考 系统架构设计师系列知识点之设计模式(6)
    线性结构查找(顺序、折半、分块)
    QT 跨平台检测断网,检测锁屏,检测睡眠,检测屏保功能
    橘子学JVM之命令行监控05之jstack
    二叉树习题
    json字符串和对象之间的转换
    Kubernetes资源编排系列之五: OAM篇
    【无标题】
    《算法通关村——二分查找在旋转数字中的应用》
  • 原文地址:https://blog.csdn.net/2301_79724394/article/details/139308847