zoukankan      html  css  js  c++  java
  • C++之路起航——标准模板库(queue)

        queue:

                     FIFO队列:先进先出队列。

                     优先队列:对队列中的元素按优先级的大小输出。

          定义:

                    FIFO队列: queue<数据类性>变量名。

                    优先队列:priority_queue<数据类型>变量名。

         Eg:

                    FIFO队列: queue<int>que//定义了一个名为que的整型的先进先出队列。

                    优先队列:priority_queue<int>que//定义了一个名为que的整型的优先队列。

                  //当类型为自定义结构时,需要重载运算符。

                       Eg:                

         struct ss//定义了一个ss的结构体
          {
              int x,y;
              ss(){}//构造函数
              ss(int xx,int yy)//重载函数
                {
                    x=xx;
                    y=yy;
                 } 
               bool operator<(const ss& b)const{//重载函数运算符。
                    return y<b.y;
                  }
          };

             priority_queue<ss>que;//定义使用;

                      注:调用操作函数时,类型也应为定义类型,例子因为重载了初始函数,所以可以用que.push(ss(1,2))来操作。

        基本操作:

              que.empty()//若队列不为空,则返回false,否则返回true;

              que.szie()//返回队列中元素个数;

              que.pop()//删除队首元素,但不返回其值;

              que.front()//返回队首元素的值,但不删除该元素,(仅适用于FIFO队列)

              que.back()//返回队尾元素的值,但不删除该元素,(仅适用于FIFO队列)

              q.top()//返回具有最高优先级的元素的值,但不删除该元素(仅适用于优先队列)

              q.push()//对queue; 在队尾压入一个新元素;对priority_queue, 在基于优先级的的当前位置插入新元素。 

        代码解释:  

    #include<cstdio>
    #include<queue>
    #include<iostream>

    using namespace std;

    struct ss
    {
    int x,y;
    ss(){}
    ss(int xx,int yy)
    {
    x=xx;
    y=yy;
    }
    bool operator<(const ss& b)const{
    return y<b.y;
    }
    };
    int main()
    {
    priority_queue<ss>que1;
    queue<int>que2;
    que2.push(1);
    que2.push(3);
    que2.push(2);
    cout<<"que2的长度";
    cout<<que2.size()<<endl;
    que1.push(ss(1,2));
    que1.push(ss(2,3));
    que1.push(ss(3,4));
    cout<<"que1的长度";
    cout<<que1.size();
    cout<<"que2中的第一个元素";
    cout<<que2.front()<<endl;
    cout<<"删除que2中第一个元素"<<endl;
    que2.pop();
    cout<<"que2的长度";
    cout<<que2.size()<<endl;
    cout<<"que1的第一个元素的x与y值";
    cout<<que1.top().x<<" "<<que1.top().y<<endl;
    }

  • 相关阅读:
    javascript高级实战学习
    javascript基础入门知识点整理
    Spring Boot 配置文件application.properties
    Spring Boot应用启动器
    IDEA安装maven和设置自动配置下载包
    Spring Data Solr创建动态域报错:org.springframework.data.solr.UncategorizedSolrException
    虚拟机使用配置固定IP
    1.Solr安装与配置
    spring mvc 常用注解
    Jqgrid学习
  • 原文地址:https://www.cnblogs.com/grhyxzc/p/5080090.html
Copyright © 2011-2022 走看看