zoukankan      html  css  js  c++  java
  • C++ 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;

      

    set_intersection( S.begin(), S.end(), S2.begin(), S2.end(),inserter( Si, Si.begin() ) );//交集
    set_union( S.begin(), S.end(),S2.begin(), S2.end(),inserter( Su, Su.begin() ) ); //并集
    set_difference( S.begin(), S.end(),S2.begin(), S2.end(), inserter( Sd, Sd.begin() ) ); //差集
    set_symmetric_difference( S.begin(), S.end(),S2.begin(), S2.end(),inserter( Ssd, Ssd.begin() ) );//对称差集
  • 相关阅读:
    uva 408 Uniform Generator
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
  • 原文地址:https://www.cnblogs.com/pblr/p/5524394.html
Copyright © 2011-2022 走看看