• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
hyxzc
博客园    首页    新随笔    联系   管理    订阅  订阅

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;
}

posted @ 2015-12-27 14:49  hyxzc  阅读(1244)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3