set的学习笔记

                       set的简单食用方法介绍

set是C++中的一个STL,据说的是用红黑树实现的,可以用于一些题目的去重,排序。插入,删除统计个数操作的复杂度都是O(logN),获取和清空分别为O(1)和O(n),具有很好的泛用性。(当然stl会很慢,但是总比考场打200多行的红黑树好)

它的定义方式如下

set<*****> s;

其中*****是指该集合的类型,s是集合的名称

初始的时候集合都是空集

这里集合的定义要说一下,集合中

  •  没有重复元素

就跟高中必修一中讲的集合类似

  1. 插入

                  .insert();插入新元素

                  如果这个元素已经出现了,就当输入数据在放屁(等于什么也没做)

                  set<string> s;

                  s.insert("1145141919810");

                  s.insert("hhhhhhh");

       2.删除

        .erase();删除新元素

          记法:檫除的英文

          s.erase("1145141919810");

          当然这个元素要是真实存在在set里的,不然也会被当成放屁

     3.查找

        s.count()

          记法:一个一个数(当然内部不可能真的一个一个数,不然就爆了

          用法

          if(s.count("1145141919810")

          {

                cout << "echou";

           }

           s.count("***")相当于一个bool类型的函数

           它在set里面查找为“***”的元素,如果找到了返回1,没有就返回0;

      4.遍历,打印每一个元素

        遍历是用迭代器实现的,迭代器这个东西就好像一根手指,能够指出每一个东西

          它的特点就是:用从小到大的顺序(字符串也是能排序滴),方便查找,打印,每一个存在集合中的元素(其实是难记


          相当于用set<string>::iterator定义一个指针it,指向s的开头(可以理解为for循环中的int i = 1)

          中间是it不指向set的结尾,即为:it != s.end();

          最后 it ++

          用法

          for (set<string>::iterator it = s.begin(); it != s.end(); it ++) {

                  cout << *it << endl;//相当于指针,输出但不改变it的值

          }

         5.清空

               .clear()

              可用s.clear()清空set,同时会释放set所占用的内存

以上就是set的简单食用方法了(考场够你用的了)

如果您想了解更多关于set的用法,可以访问一下官方博客(前提你英语够好(你不会用百度翻译吗))

http://www.cplusplus.com/reference/set/set/?kw=set

求点赞     

原文地址:https://www.cnblogs.com/liujunxi/p/13416307.html