zoukankan      html  css  js  c++  java
  • C++标准模板库(STL)之Set

    1、Set的用法

    Set:集合,一个内部自动有序而且不重复元素的容器。使用set,要加头文件#include<set>和using namespace std;

      1.1、Set的定义

    set<typename> name;
    set<int> name;
    set<double> name;
    set<char> name;
    set<Node> name;//Node是结构体类型
    set<typename> Arrayname[arraySize];//set<int> a[100];a[0]~a[99]的每一个都是一个set容器。
    /*
    定义和写法和vector基本一样,同样typename可以是任何基本类型,结构体,STL容器类型。
    同样,typename是容器的时候,>>后要加空格,避免编译器当成位运算出错。
    */

      1.2、set容器内元素的访问

      set只能通过迭代器iterator访问

    set<typename>::iterator it;//typename对应定义set时的类型。
    set<int>::iterator it;

      因为除了vector和string之外的STL的容器都不支持以下标的方式访问。

    #include<stdio.h>
    #include<set>
    using namespace std;
    int main()
    {
        set<int> st;
        for(int i=0;i<5;i++)
        {
            st.insert(i);
        }
        for(set<int>::iterator it=st.begin();it!=st.end();it++)
        {
            printf("%d ",*it);
        }
        return 0;
    }
    View Code

      set内的元素,自动递增排序,并且去重。

      1.2、set常用函数

        1.2.1、insert()函数

        insert(x):将x插入set容器中,并且自动递增排序和去重。时间复杂度为O(logN),N为元素个数

        1.2.2、find()函数

        find(value):查找值为value的元素,返回它的迭代器。时间复杂度为O(logN),N为元素个数

        1.2.3、erase()函数

        erase(x):删除单个元素,时间复杂度为O(logN)

        erase(a,b);删除左闭右开区间内[a,b)的元素,时间复杂度为O(b-a)

        1.2.4、size()函数

        size():用来获得set内元素的个数,时间复杂度为O(1)

        1.2.5、clear()函数

        clear():用来清空set所有元素,时间复杂度为O(N) 

    #include<stdio.h>
    #include<set>
    using namespace std;
    int main()
    {
        set<int> st;
        st.insert(2);
        st.insert(5);
        st.insert(1);
        st.insert(2);
        st.inert(4);
        st.insert(3);
        int len=st.size();//3
    
        for(set<int>::iterator it=st.begin();it!=st.end();it++)
        {
            printf("%d ",*it);//1,2,3,4,5
        }
        st.erase(st.find(2));//利用find()函数先找到2,然后erase删除它
        st.erase(3);//删除set中值为3的元素,时间复杂度为O(logN)
        set<int>::iterator it=st.find(4);
        st.erase(it,st.end());//删除元素2到set末尾之间的数,也就是4,5
        st.clear();
        int len_clear=st.size();//0
        return 0;
    }
    View Code

      1.3、set的用途

      set重要的作用:自动去重,升序排序。

    2018-09-25 15:36:20

    @author:Foreordination

  • 相关阅读:
    CentOS下Varnish实现动静分离
    Varnish语法
    Varnish日志切割+参数优化
    阿里云CentOS7下部署Django+uwsgi+pip3+pytz+python3
    搭建Hadoop伪分布式环境
    [Linux]-gitlab安装
    pyspider安装
    阿里云ECS搭建SVN
    在Ubuntu18.04安装Adobe Flash Player插件
    从SQL的视角用powershell
  • 原文地址:https://www.cnblogs.com/drq1/p/9699370.html
Copyright © 2011-2022 走看看