set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。
平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。
构造set集合主要目的是为了快速检索,不可直接去修改键值。

常用操作:
1.元素插入:insert()
2.中序遍历:类似vector遍历(用迭代器)
3.反向遍历:利用反向迭代器reverse_iterator。
    例:
    set s;
    ......
    set::reverse_iterator rit;
    for(rit=s.rbegin();rit!=s.rend();rit++)
4.元素删除:与插入一样,可以高效的删除,并自动调整使红黑树平衡。
            set s;
            s.erase(2);        //删除键值为2的元素
            s.clear();
5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
            set s;
            set::iterator it;
            it=s.find(5);    //查找键值为5的元素
            if(it!=s.end())    //找到
                cout<<*it<<endl;
            else            //未找到
                cout<<"未找到";
6.自定义比较函数
    (1)元素不是结构体:
        例:
        //自定义比较函数myComp,重载“()”操作符
        struct myComp
        {
            bool operator()(const your_type &a,const your_type &b)
            [
                return a.data-b.data>0;
            }
        }
        sets;
        ......
        set::iterator it;
    (2)如果元素是结构体,可以直接将比较函数写在结构体内。
        例:
        struct Info
        {
            string name;
            float score;
            //重载“<”操作符,自定义排序规则
            bool operator < (const Info &a) const
            {
                //按score从大到小排列
                return a.score
            }
        }
        set s;
        ......
        set::iterator it;

set头文件使用方法相关推荐

  1. linux默认头文件,Linux安装合适内核头文件的方法

    摘要 腾兴网为您分享:Linux安装合适内核头文件的方法,桌面时钟,中建在线,圆通金刚,西餐菜谱等软件知识,以及万象,我不信表情包,兔子洞,服你网,电商直播app,网络工具箱,ffu文件,电脑功率计算 ...

  2. 《IAR添加文件夹和头文件的方法》

    最近在移植别的公司的代码,使用IDE是IAR,由于不熟悉使用,在这里做个记录. 添加文件夹和头文件的方法 添加文件夹的方法: (1) 右键项目 (2)选择add (3)选择add group 然后添加 ...

  3. CCS编译添加链接库文件与头文件的方法

    编译的include文件目录 Compiler -> Preprocessor->include search path //include文件搜索路径 $(Proj_dir);     ...

  4. C语言引用不同路径下的头文件的方法

    C语言学习笔记,备查: 希望在一个A.c文件中引用另一个B.c文件的方法,可以将B.c文件中的方法提取至B.h头文件,然后在B.c和A.c中分别用#include "XXX/B.h" ...

  5. 【IAR】IAR for MSP430添加头文件的方法

    一.问题由来   在使用IAR for MSP 430编译代码时,用户为了方便管理文件,会将编写的.c和.h头文件存放在不同的路径下,这个路径是用户自定义的路径,因此我们不能直接在main.c文件中直 ...

  6. 在Windows环境下使用与Linux/Unix操作相关的C/C++头文件的方法(以TDM-GCC和CLion为例)

    前言 很多时候我们需要在Windows环境中写与Linux/Unix相关的C/C++代码,而Linux/Unix相关的头文件在Windows中是缺失的,这就导致IDE的文本纠错等功能无法正常使用带来很 ...

  7. C/C++不同文件夹下包含头文件的方法及#include的使用

     本文主要介绍了如何不同文件夹下使用预处理器指示符#include. 假设我们有如下一个工程,其中包含了几个源代码文件和头文件.其中main.c是主源代码文件,里面包含main函数. X 在bas ...

  8. Keil软件Project显示隐藏.h头文件的方法

    在Project内的任意文件夹或文件上点击右键,选择Show Include File Dependencies,.c文件边上就会出现+号,可以查看.h头文件,相反,取消选择就可以隐藏.h头文件

  9. 矩池云上缺少cusparse.h头文件解决方法

    1.检查系统版本 source /etc/os-release && echo $VERSION_ID 2.导入apt仓库和其GPG key # 第一步若输出 16.04 curl - ...

  10. 矩池云上缺少curand.h、cublas_v2.h、cusolverDn.h头文件解决方法

    1.检查系统版本 source /etc/os-release && echo $VERSION_ID 2.导入apt仓库和其GPG key # 第一步若输出 16.04 curl - ...

最新文章

  1. Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(6)
  2. java 枚举 下拉框_枚举enum在velocity模板语言中的应用-下拉菜单
  3. 开源大数据周刊-第103期
  4. 如何阻止表单的默认提交事件
  5. linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
  6. Express 4.x Node.js的Web框架----《转载》
  7. Object slicing(对象切片)
  8. 谷歌SEO考虑富媒体文件
  9. 寒假每日一题——贝茜放慢脚步
  10. html 标签英文全称,html标签英文全称
  11. HTTP请求/响应报文结构
  12. 先锋年度新品T1,真无线通话降噪蓝牙耳机测评
  13. 一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu)
  14. 国外问卷调查这个项目可以做吗?国外问卷调查怎么赚钱?
  15. 问题 G: 向右看齐
  16. 攻防世界crypto高手题之sherlock
  17. go语言package简单理解
  18. 金融科技之:互联网贷款企业运营规范
  19. 反射光栅 PRK46C.D4P-M12
  20. 超详细——Java面试高频

热门文章

  1. Linux 安装Oracle10g
  2. java 根据 SVN changeLog 文件 生成增量升级包
  3. attention与self attention的区别
  4. 日语语法笔记【翻译】
  5. 内网渗透(四十六)之横向移动篇-使用系统漏洞ms17010横向移动
  6. SSM框架与Springboot框架的区别
  7. 详解sprintf()sprintf_s()
  8. Unix/Linux下的Curses库开发指南——第三章curses库窗口
  9. python变量名长度有限制吗_怎么去除 Python 下载文件时的文件名长度 50 限制
  10. 关于小红书的小程序不同数量的轮播图,展示不一样的轮播指示点的实现