zoukankan      html  css  js  c++  java
  • 手写队列以及stl中队列的使用

    一,手写队列。

     1 struct queue
     2 {
     3     int maxn=10000000;
     4     int first=0,rear=0,a[maxn];
     5     
     6     void push(int x)
     7     {
     8         a[++rear]=x;
     9     }
    10     void pop()
    11     {
    12         first++;
    13     }
    14     int  front()
    15     {
    16         return a[first];
    17     }
    18     int empty()
    19     {
    20         return first>rear?0:1;
    21     }
    22 }q;

    如图所示,是我的手写队列。

    二,stl中普通队列的使用。

    1,基本操作

     1 push(x) 
     2     将x压入队列的末端
     3 
     4 pop()     
     5     弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
     6 
     7 front()
     8      返回第一个元素(队顶元素)
     9 
    10 back()
    11      返回最后被压入的元素(队尾元素)
    12 
    13 empty()
    14      当队列为空时,返回true
    15 
    16 size()
    17      返回队列的长度

    2,使用方法

    #include <queue>

    3,声明方法

        ①普通说明

         1 queue<int>q; 

        ②结构体说明

       

    1 struct node
    2     {    
    3        int x, y;
    4     };
    5     queue<node>q;

    三,stl中优先队列的使用方法

    1,优先队列的介绍。优先队列的出队并不根据入队的先后顺序,而是根据队内元素的优先权顺序的大小(或者自己算子来计算进行的排序)

    同时优先队列(priority_queue),有三个模板类参数,元素类型,容器类型,比较算子。默认的容器为vector,默认比较算子为less,即小在前,大在后。这块我有点不懂。反正大的优先出队。

    抄原话为(“……默认算子为less,即小的往前排,大的往后排(出队时序列尾的元素出队)……”

    2,定义优先队列的对象的示例代码如下

    1 priority_queue<int >q1;
    2 
    3 priority_queue<pair<int,int> >q2;
    4 
    5 priority_queue<int,vector<int>,greater<int> >q3;//定义小的先出队

    3,其操作与queue基本相同。

    4,关于比较算字的应用。

    四,另外解释

    C++队列的成员函数:
    
    back()返回最后一个元素
    empty()如果队列空则返回真
    front()返回第一个元素
    pop()删除第一个元素
    push()在末尾加入一个元素
    size()返回队列中元素的个数
    
    头文件:
    #include <queue>
    
    声明: 
    1、
    queue<int> q;
    2.
    struct point
    {
    int x;
    int y;
    };
    queue<point> que;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    pair类型: 
    一般当一个对象有多个属性的时候,我们会用结构体stuct写多个属性,而当只有两个属性的时候,就可以使用pair. 
    使用方法:
    
    pair<type,type> name;
    1
    比如:
    
    pair<int,int> P; //对象P有两个属性,都是int类型
    1
    而且,这里类型一般不做限制,所以自己定义的类型一样可以使用。 
    访问方法: 
    pair类型有两个属性值,一个first,一个second
    
    int x=P.first; //访问P的第一个属性值
    int y=P.second; //访问P的第二个属性值
    1
    2
    如果需要定义多个pair类型,可以使用typedef,例子如下:
    
    typedef pair<int,int>P;
    P ac(1,0);
    P bc(0,0);

     五,以上都是网上的东西

    1,我来一些感性的认识,队列简单说,就像自己从屏幕输入的那些东西。当你死机时候乱点其实都是记录上的。

    2,另外之前队列和结构体之间似乎搞错了一些东西,队列之所以是队列,是和平常定义结构体不一样的。

  • 相关阅读:
    hdu3336 Count the string 扩展KMP
    hdu3294 Girls' research manacher
    hdu3068 最长回文 manacher
    hdu2886 Lou 1 Zhuang 数学/快速幂
    hdu2841 Visible Trees 容斥原理
    hdu2819 Swap 二分图匹配
    RandomAccess接口的使用
    java集合框架
    java集合简介
    JDK,JRE,JVM的区别与联系
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12006861.html
Copyright © 2011-2022 走看看