zoukankan      html  css  js  c++  java
  • set的常见用法

    set的使用

    set是什么

    set是一个内部有序且不含重复元素的容器

    用处

    *使得元素自动有序
    *去除重复元素
    

    set的引入

        # include <set>
        using namespace std;
    

    set的定义

        set<typename> name;
        //typename可以是任何类型,比如int、float、或者结构体、对象
    

    定义的实际例子

        set<int> name;
        set<float> name;
        set<double> name;
        set<node> name;//node是一个结构体
        set<typename> array[max_size];//定义一个set类型的数组
    

    set的使用

    set内部的元素的访问

    set只能通过迭代器来进行访问

        //定义迭代器的时候要填写实际的类型
        set<typename>::iterator it;
        set<int>::iterator it;
        set<char>::iterator it;
    

    除了vector和string外的stl容器都不支持*(it+i)的访问方式

    元素的插入

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        st.insert(3);
        st.insert(2);
        st.insert(7);
        st.insert(1);
        for(set<int>::iterator it=st.begin();it!=st.end();it++)
        {
            cout<<*it<<endl;
        }
        return 0;
    }
    

    set常见函数的使用

    insert

    insert(x)将x插入set,并自动使得该元素有序且可以去重

    find

    find(value)查找到集合中值等于value位置的迭代器

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        for(int i=0;i<4;i++)
        {
            st.insert(i);
        }
        set<int>::iterator it=st.find(3);
        cout<<*it<<endl;
        return 0;
    }
    

    erase()

    erase有两种用法:
    1.删除单个元素
    1)erase(it),it为要删除元素的迭代器

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        st.insert(1);
        st.insert(2);
        st.insert(3);
        st.insert(4);
        st.erase(st.find(2));
        for(set<int>::iterator it=st.begin();it!=st.end();it++)
        {
            cout<<*it<<' ';
        }
        cout<<endl;
        return 0;
    }
    

    2)erase(value),value为要删除的值

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        st.insert(1);
        st.insert(2);
        st.insert(3);
        st.insert(4);
        st.erase(4);
        for(set<int>::iterator it=st.begin();it!=st.end();it++)
        {
            cout<<*it<<' ';
        }
        cout<<endl;
        return 0;
    }
    

    2.删除一个区间内的元素

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        st.insert(1);
        st.insert(2);
        st.insert(3);
        st.insert(4);
        st.erase(4);
        set<int>::iterator it=st.find(1);
        st.erase(it,st.end());
        for(set<int>::iterator it=st.begin();it!=st.end();it++)
        {
            cout<<*it<<' ';
        }
        cout<<endl;
        return 0;
    }
    

    size()

    用来获取集合元素数量

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        st.insert(1);
        st.insert(2);
        st.insert(3);
        st.insert(4);
        st.erase(4);
        cout<<st.size()<<endl;
        return 0;
    }
    

    clear()

    清空所有元素

    # include <iostream>
    # include <set>
    using namespace std;
    int main(void)
    {
        set<int> st;
        st.insert(1);
        st.insert(2);
        st.insert(3);
        st.insert(4);
        st.clear();
        cout<<st.size()<<endl;
        return 0;
    }
    
  • 相关阅读:
    Thomas Hobbes: Leviathan
    10 Easy Steps to a Complete Understanding of SQL
    day3心得
    py编码终极版
    day2 作业
    Python 中的比较:is 与 ==
    day2-心得
    day1--心得
    day1作业
    python--open用法
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11367633.html
Copyright © 2011-2022 走看看