zoukankan      html  css  js  c++  java
  • 常用stl(c++)

    众所周知,c++的模板库是相当强大的。

    下面我来列举一些常用的,(神奇的)

    //部分材料选自《算法竞赛入门经典(第2版)》(刘汝佳)

    一,algorithm (算法)

      min(a,b)-----------取最小值

         max(a,b)-----------取最大值

    //当然在实际应用当中可能无法直接使用,这时候我们需要自己编写函数

    例:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    struct node
    {
        int x,y;
    } e[1001];
    int max(int z1,int z2)
    {
        if(e[z1].x==e[z2].x)
        {
            if(e[z1].y>=e[z2].y)return z1;
            else return z2;
        }
        else 
          if(e[z1].x>e[z2].x)return z1;
          else return z2;
          /*-----------------
          以x为第一关键字,y为第二关键字,比叫结构体e[z1],e[z2].
          -------------------*/
    }
    int main()
    {
        cin>>e[1].x>>e[1].y;
        cin>>e[2].x>>e[2].y;
        cout<<max(1,2);
        return 0;
    }

       sort(int first,int last,int cmp)----------将[first,last)这样一个左闭右开的区间进行排序(默认从小到大)

      运用自定义的cmp函数,可以将它的排序自定义

      例:

    int cmp(node x,node y)
    {
        return x.a==y.a?x.b<y.b:x.a<y.a;
    }

      全例:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int cmp(int a,int b)
    {
        return a<b;
        /*--------------
        若a<b,表示从小到大排序
        若a>b,表示从大到小排序*/
    }
    int a[1001];
    int n;
    int main()
    {
        cin>>n;
        for(int i=0;i<n;i++)
        cin>>a[i];
        sort(a,a+n,cmp);
        /*----------
        表示排序a[0-(n-1)]这些数
        正好与我们的存储方式相同*/ 
        for(int i=0;i<n;i++)
        cout<<a[i];
        return 0;
    }

      lower_bound(first,last,element)--------查找第一个大于等于element的数所在的位置

      upper_bound(first,last,element)-------查找第一个大于element的数所在的位置

    int p2=lower_bound(a,a+8,2)-a;
        /*因为指针是有增减性的,
            而它这里返回的是位置,
            减去a这个数组所在的位置
        ,就是这个数在数组里的位置 */ 
    cout<<a[p2];

      前提:必须是有序区间

    //借图于流沙-岁月的博客

    这是查找顺序

    补充一点内容:迭代器(iterator)

    度娘翻译:迭代器(iterator)有时又称游标(cursor),是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器物件的内容。它可以把抽象容器和通用算法有机的统一起来。

    看不懂对不对?我也不懂。  

      简单来说,就是指向STL里容器的一个指针,返回其位置

      定义:vector<int> ::inerator p;(红色为必写内容)

      基本用法和指针一样,记录位置。

      '*'取该位置的值,'&'取这个位置

    vector<int> ::inerator p;
    p="位置";
    p=*"位置"

       大概就是这样。

    这样我们STL的两大内容就都说完了,关于容器,我们下次在说

    byebye!(o゜▽゜)o☆[BINGO!]

    我博客里有大量的从别的博客复制过来的代码,分析,以及理解,但我一律会在文章后面标记原博客大佬博客名,其中部分会加以连接。 绝无抄袭的意思,只是为了我在复习的时候找博客方便。 如有原作者对此有不满,请在博客留言,我一定会删除该博文。
  • 相关阅读:
    zabbix添加对haproxy的监控
    【转】最近搞Hadoop集群迁移踩的坑杂记
    【转】Hive配置文件中配置项的含义详解(收藏版)
    【转】Spark-Sql版本升级对应的新特性汇总
    kylin查询出现日期对应不上的情况
    【转】saiku与kylin整合备忘录
    Eclipse中Ctrl+方法名发现无法进入到该方法中……
    maven会报Could not transfer artifact xxx错误
    【转】CDH5.x升级
    【转】Kylin实践之使用Hive视图
  • 原文地址:https://www.cnblogs.com/ZDHYXZ/p/ZDHYXZ.html
Copyright © 2011-2022 走看看