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

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

C++ Set常用用法相关推荐

  1. 【Android 异步操作】Handler 机制 ( Handler 常用用法 | HandlerThread 简介 | HandlerThread 源码注释分析 )

    文章目录 一.Handler 常用用法 二.HandlerThread 简介 三.HandlerThread 源码 一.Handler 常用用法 主线程 Handler 主要作用 : Looper 和 ...

  2. 【Android 异步操作】Timer 定时器 ( Timer 与 TimerTask 基本使用 | Timer 定时器常用用法 | Timer 源码分析 )

    文章目录 一.Timer 定时器基本使用 二.Timer 定时器常用用法 三.Timer 源码分析 四.Timer 部分源码注释 五.源码及资源下载 参考文档 : Timer 定时器 API 文档 T ...

  3. 【Kotlin】Kotlin enum 枚举类 ( 常用用法 | 初始化成员变量 | 实现抽象方法 | 实现接口 | 获取名称和位置索引 | 调用枚举常量方法 )

    文章目录 I . 枚举类常用用法 II . 枚举类初始化 III. 枚举类匿名类 IV . 枚举类实现接口 V . 获取枚举常量名称和位置索引 VI . 获取枚举常量的成员变量 VII . 调用枚举常 ...

  4. Python中的基本函数及其常用用法简析

    分享Python中的基本函数及其常用用法简析,首先关于函数的解释函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程 ...

  5. 【Data Mining】机器学习三剑客之Numpy常用用法总结

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自AI蜗牛车,禁二次转载 一.前言 玩数据分析.数据挖掘.AI的都知道这个pyt ...

  6. grep参数说明及常用用法

    grep参数说明及常用用法 查看文件内容 [kou@localhost ~]$ more size.txt b124230 b034325 a081016 m7187998 m7282064 a022 ...

  7. [转]ssh常用用法小结

    ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...

  8. 关于grep,egrep正则表达式的常用用法

    正则表达式是一类字符所书写的模式(pattern) 元字符:不表示字符本身的意义,而用于额外功能性的描述:而如果在这些特定的字符前加/这个符号那么这些字符就表示原有的意思. 正则表达式:基本正则表达式 ...

  9. Python格式化字符串f-string常用用法

    简介: f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal ...

  10. Linux基本命令 -- grep参数说明及常用用法

    Linux基本命令 -- grep参数说明及常用用法 趁着午休的时间把自己经常使用的一些grep命令整理一下. 方便以后查看. 后续会逐步把awk/sed/find等常用的命令理一理. 增强下记忆. ...

最新文章

  1. android+定时器+动画,Android 实现定时器的四种方式总结及实现实例_Android_脚本之家...
  2. 不使用session,借助redis实现验证码
  3. Linux平台安装go并配置go环境
  4. 并发之初章Java内存模型
  5. 中国速度袋行业市场供需与战略研究报告
  6. 运维部门工作总结_部门动态 | 主动出击 超前谋划 全面做好园区网络运维工作...
  7. JS不能向WASM传递数组?
  8. DDOS防御流量清洗的解决方案,流量清洗服务有什么功能?
  9. Nature Neuroscience(一)
  10. 计算思维运用计算机的例子,计算思维案例及平时成绩讨论题资料.doc
  11. Excel数据透视表只能求和运算?快来学习求差运算小技巧
  12. Windows Media Player 无法播放
  13. 谷歌浏览器直接启动打印不预览解决方案
  14. 《互联网软件应用与开发(网络程序设计)》
  15. 用Windows电脑看txt小说,阅读器软件怎么选
  16. JS异常处理:Uncaught TypeError: xxx is not a function at HTMLAnchorElement.onclick
  17. 组合数学 C(n,k)
  18. linux搭建服务器ppt,Linux服务器远程控制搭建.ppt
  19. cad模型轻量化_什么是真正的 3D CAD 模型(2)
  20. 博客作者简介--Dynamics 365技术到项目经理之路

热门文章

  1. RSA非对称加密算法Java实现之输出key文件
  2. mysql表数据以本地文件方式导入Hive
  3. Hadoop系列七:Hadoop之sqoop篇
  4. 窗口消息——Windows核心编程学习手札之二十六
  5. numpy and pandas
  6. EasyStruct.js轻松创建可填入式html模板结构
  7. CTFshow 命令执行 web62
  8. 10.2.1 关于vc++不支持把类的成员函数定义为类的友元函数的处理
  9. File类 读取文件
  10. opencv运行时exe 无法写进去的解决方法