• set和map容器、


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

    set集合主要是处理集合之类的问题

    八、  set  集合容器
    1. 创建   set  集合对象
    set<int> S;
    2. 插入元素
    S.insert(2);
    3. 删除元素
    S.erase(2);
    4. 查找元素
    set<int>::iterator it;
    //成功返回元素迭代器位置,失败返回end()迭代器位置
    it=S.find(2);
    5. 自定义比较函数
    (1)元素不是结构体
    struct Comp
    {
    bool operator () (const int &A,const int &B)
    {
    //由大到小的顺序
    returnA>B;
    }
    };
    set<int,Comp> S;
    (2)元素是结构体
    struct Info
    {
    float Score;
    string Name;
    bool operator < (const Info &I) const
    {
    //按Score由大到小排列
    return I.Score<Score;
    }
    };
    set<Info> S;

    map呢只要是处理一一对应之类的问题,比如单调递增函数就是一种一一对应的关系,因为每一个x有且只有一个y与之对应

    十、  map  映照容器
    1. 创建  map  对象
    map<int,char> M;
    2. 删除元素
    M.erase(2);
    3. 查找元素
    map<int,char>::iterator it;
    //成功返回键值所在迭代器位置,失败返回end()迭代器位置
    it=M.find(2);
    4. 自定义比较函数
    (1)元素不是结构体
    struct Comp
    {
    bool operator () (const int &A,const int &B)
    {
    //键值由大到小
    returnA>B;
    }
    };
    map<int,char,Comp> M;
    (2)元素是结构体
    struct Info
    {
    float Score;
    string Name;
    bool operator < (const Info &I) const
    {
    //按Score由大到小排列
    return I.Score<Score;
    }
    };
    map<Info,int> M;

  • 相关阅读:
    隔行扫描 和 逐行扫描
    CSS3--关于z-index不生效问题
    vue与其他框架对比
    跨域(转)
    vue 事件修饰符(阻止默认行为和事件冒泡)
    vue 3.0新特性
    bash leetcode
    数据库
    css排版
    盒模型
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5183360.html
Copyright © 2020-2023  润新知