zoukankan      html  css  js  c++  java
  • C++ set用法以及迭代器用法

    有关set的一些常用函数

    1.begin() / end() 返回首/尾元素迭代器

    2.rbegin() / rend() 返回尾/首元素反向迭代器,反向迭代器可以反向遍历容器的迭代器,从下面的程序已经可以看出,正常的迭代器++为顺序遍历,而反向迭代器的效果就是反向迭代器++后,可倒序遍历容器(--则相反)。

    3.支持用 '=' 赋值

    4.empty() 当前set是否为空

    5.size() 返回set大小

    6.insert() / erase() 插入/删除一个元素

    7.swap() 交换两个set内所有元素

    8.clear() 清空当前set

    9.find(a,b,c) 返回以a,b为迭代器的区间内值为c的元素的迭代器(a,b可有可无)

    10.count(a,b,c) 返回以a,b为迭代器的区间内值为c的元素的个数(a,b可有可无)

    11.equal_range(a,b,c) 返回一个pair,pair.first为这个范围的下界,pair.second为这个范围的上界

    https://www.luogu.org/problemnew/show/P1059

    set裸题= =...

    代码:

    #include<algorithm>
    #include<iostream>
    #include<set>
    #include<cstdio>
    #include<vector>
    using namespace std;
    int main(){
           set<int> num;
           int a,n;
           scanf("%d",&n);
           for(register int i=0;i<n;++i){
                  scanf("%d",&a);
                  num.insert;(a);
           }
           printf("%d
    ",((n=num.size())?n:n));
           set<int>::iterator smax=num.end();
           for(set<int>::iterator iter=num.begin();iter!=smax;++iter){
                  printf("%d ",*iter);
           }
           return 0;
    }
    

      

    用到了iterator ,用来输出set ;

    因为set是用平衡树(红黑树)实现的,所以有序;

    所以set可以伪去重,排序,但显然常数巨大,容易被卡,还是手写吧

    迭代器用法:

          xxxxx::iterartor name;          //定义一个xxxxx域内的迭代器

    *注意循环变量的用法;

    禁止诸如开发者知识库/布布扣/码迷/学步园/马开东等 copy 他人博文乃至博客的网站转载 ,用户转载请注明出处:https://www.cnblogs.com/xcysblog/
  • 相关阅读:
    设计模式学习——前言和目录
    模板颜色搭配
    win7、xp下Meclipse SVN用户名修改
    JS编码解码
    用Javascript进行HTML转义(分享)
    打印异常信息
    lucene 抛出的异常(分享)
    SQL语句优化(分享)
    Java集群之session共享解决方案
    VUE中返回上一页
  • 原文地址:https://www.cnblogs.com/xcysblog/p/8298665.html
Copyright © 2011-2022 走看看