zoukankan      html  css  js  c++  java
  • C++set用法

    set是什么?

    Q:set是什么?

    A:set是c++开发者给你提供的一个集合。

    Q:set可以进行什么操作?

    A:set可以插入,查询,排序,遍历等一些操作。(set自动排序,是一个有序集合)

    讲了这些,你应该知道set是什么了吧

    头文件:<set>

    set声明方法:set<类型> (name)

    迭代器:set<类型>::iterator (NAME)

        set<类型>::reverse_iterator (NAME)

    下面看一看set的主要操作:

    (name).insert()往集合里插入元素

    (name).clear()清除集合里所有元素

    (name).erase()删除集合元素

    (name).find()查询元素是否存在

    (name).count()返回某个元素出现了几次

    (name).empty()判断元素是否为空

    (name).size()查询集合中元素总数

    (name).(r)begin()返回第一个指向元素的迭代器

    (name).(r)end()返回最后一个指向元素的迭代器

    (name).lower_bound()返回第一个大于等于给定值的值的地址

    (name).upper_bound()返回第一个大于给定值的值的地址

    先推荐一道水题洛谷P3370

    题目大意:

    输入N个字符串,判断有几个不同字符串

    这就是一道很水的题了,直接看代码:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<set>
    using namespace std;
    set<string> ss;
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            string s;
            cin>>s;
            ss.insert(s);
        }
        printf("%d
    ",ss.size());
        return 0;
    }

    我们再进一步,再来看一道题洛谷P2161

    这是不是也很水?(会stl与不会的区别

    我们维护一个set集合,

    然后修改每个的lower_bound(),

    最后输出它的元素的多少就OK了。

    代码:

    #include<set>
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    struct cz
    {
        int l,r;
        bool operator <(const cz&rhs)const{return r<rhs.r;}
    };
    set<cz>s;
    int n;
    char op;
    int main()
    {
        scanf("%d",&n);
        while(n--)
        {
            cin>>op;
            if(op=='A')
            {
                set<cz>::iterator it;
                int l,r,ans=0;
                cin>>l>>r;
                it=s.lower_bound((cz){0,l});
                while(it!=s.end() && r>=it->l)
                {
                    ++ans;
                    s.erase(it);
                    it=s.lower_bound((cz){0,l});
                }
                cout<<ans<<endl;
                s.insert((cz){l,r});
            }
            else cout<<s.size()<<endl;
        }
        return 0;
    }

     另外,有兴趣的同学可以去看看map的用法

  • 相关阅读:
    【转】UCenter的MVC架构
    最新的windows xp sp3序列号(绝对可通过正版验证)
    马丁催眠的花园
    【转】UCenter 的 daddslashes详解
    ckEditor与ckFinder的集成
    【转】UCenter代码研究第一篇(ROOT/admin.php)
    MVC学习第三节:Controller与View
    MVC学习第二节:UrlRouting
    MVC 学习第十节 请求Controller
    MVC学习第九节 HtmlHelper
  • 原文地址:https://www.cnblogs.com/yigejuruo/p/10462440.html
Copyright © 2011-2022 走看看