• STL-set and multiset


     

    ! ! ! ! set 中的元素总是保持单调递增。

    set<int> a;

    set的插入

    
    
    set没有尾部插入函数push_back(),元素的插入一般使用insert进行动态检索插入。
    a.insert(x):在集合中a中插入元素x,x 的类型必须与 set 的元素类型一致。如果插入的元素在set中已存在则会忽略
      int n,x;scanf("%d",&n);
      for(int i=1;i<=n;i++)
        {
          scanf("%d",&x);
          a.insert(x);
        }
    set的遍历
    begin(),end()返回值分别是set中首个元素的迭代器和set中末尾元素向后一位的迭代器。
    (begin() 返回的迭代器指向set中的最小值)
    rbegin() 返回的迭代器指向set中的最大值。
    rend() 返回指向集合中第一个元素的前一个位置的迭代器
    //正向迭代器
      set<int>:: iterator i;
      for(i=a.begin();i!=a.end();i++)
      printf("%d ",*i);printf("
    ");
    
    //反向迭代器
      set<int>:: reverse_iterator i;
      for(i=a.rbegin();i!=a.rend();i++)
        printf("%d ",*i);printf("
    ");

    其他函数

    empty() size() clear()同样适用于set
    
    erase(x):其中x可以是具体的数或迭代器。删除set中不存在的元素会被忽略。
    
    find(x):返回x元素的迭代器,如果找不到x就返回end()的迭代器。
    
    count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。
    
    lower_bound(x)返回set中大于等于x的最小元素的迭代器。 
    upper_bound(x)返回set中大于x的最小元素的迭代器。如果找不到也会返回end()的迭代器。

    multiset 

    
    
    multiset和set的定义和成员函数都相同。
    
    multiset和set的区别是:set插入的元素不能相同,但是multiset可以相同。
    
    如果删除元素x,那么在定义的比较关系下和x相等的所有元素都会被删除。
    
    count(x):set能返回0或者1,multiset是有多少个返回多少个。
    
    
    
     
    光伴随的阴影
  • 相关阅读:
    快排笔记C++
    security+redis+jwt 一个登陆注册查询的例子
    centeros 配置好环境虚拟机下载(java git mysql maven nginx Python redis nodejs tomcat )
    ZwQueryInformationProcess 反调试代码
    c++ 创建进程设置窗口标题模拟键盘鼠标例子
    求一个数二进制中包含多少个1
    憨批是我
    憨批是我
    问卷星实现自动填表刷问卷(问卷星分析post协议实现 安卓版)
    前端面试题 -- 综合
  • 原文地址:https://www.cnblogs.com/forward777/p/10086986.html
Copyright © 2020-2023  润新知