zoukankan      html  css  js  c++  java
  • 【stl学习笔记】set、multiset

    set和multiset会根据特定的排序准则,自动将元素排序。两者不同处在于multiset允许元素重复而set不允许

    在使用set或multiset之前,必须先加入头文件<set>

    set和multiset通常以红黑树完成,红黑树在改变元素数量和元素搜寻方面很出色,它保证结点安插时最多只会作两个重新连接动作,而且到达某一元素的最长路径深度最多只是最短路径深度的两倍。

    自动排序造成set和multiset的一个重要限制:不能直接改变元素值,这样会打乱原本正确的顺序。因此,要改变元素值,必须先删除旧元素,再插入新元素。

    有两种方式可以定义排序准则:

    1.以template参数定义

    2.以构造函数参数定义

    set和multiset的搜寻操作函数:

    count(elem) 返回元素值为elem的元素个数

    find(elem) 返回元素值为elem的第一个元素,如果找不到就返回end()

    lower_bound(elem) 返回elem的第一个可安插位置,也就是元素值>=elem的第一个元素位置

    upper_bound(elem) 返回elem的最后一个可安插位置,也就是元素值>elem的第一个元素位置

    equal_range(elem) 返回elem可安插的第一个位置和最后一个位置,也就是元素值==elem的元素区间

    int main()
    {
        set<int>c;
    
        c.insert(1);
        c.insert(2);
        c.insert(3);
        c.insert(4);
        c.insert(5);
        c.insert(6);
    
        cout << *c.lower_bound(3) << endl;
        cout << *c.upper_bound(3) << endl;
        cout << *c.equal_range(3).first << " " << *c.equal_range(3).second << endl;
    
    }

    输出:3 4 3 4

  • 相关阅读:
    Pikachu-File Inclusion模块
    Pikachu-RCE模块
    Pikachu-CSRF模块
    Pikachu-暴力破解模块
    Pikachu-XSS模块与3个案例演示
    将Word文档发布至博客园随笔
    DVWA-全等级XSS(反射型、存储型)
    DVWA-sql注入(盲注)
    DVWA-全等级验证码Insecure CAPTCHA
    管理页面的 setTimeout & setInterval
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3871313.html
Copyright © 2011-2022 走看看