STL常见用法整理_queue

queue

头文件:  #include<stdlib.h> 或 #include<cstdlib> + #include<queue> 

定义一个queue的变量 queue<Type> que 
查看是否为空范例  que.empty()    是的话返回1,不是返回0;
在已有元素后面增加元素(入队)que.push() 
现有元素的个数          que.size()
显示第一个元素 (最早的元素)que.front()
显示最后一个元素    que.back()
清除第一个元素 (出队)   que.pop()

例子1:
#include<cstdlib>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
    queue<int>q;
    cout<<"现在queue是否empty?"<<q.empty()<<endl;
    cout<<"push 5,push 6, push 7"<<endl;
    q.push(5);
    q.push(6);
    q.push(7);
    cout<<"现在queue的元素有几个?"<<q.size()<<endl;
    cout<<"现在queue的front为什么?"<<q.front()<<endl;
    cout << "现在 queue 的rear为何? " << q.back() << endl;
    cout << "pop" << endl; q.pop();
    cout << "现在 queue 的元素有几个? " << q.size() << endl;
    cout << "现在 queue 的front为何? " << q.front() << endl;
    cout << "现在 queue 的rear为何? " << q.back() << endl;
    system("PAUSE");
    return 0;
}
输出结果为:

注意:
(1)定义格式: queue<int> q;  或  queue<int> Q[10000];
(2) queue(const queue&) 复制构造函数

例如:用一行代码利用queue对象q1,创建一个以双向链表为底层容器的queue对象q2

queue<int,list<int>>q1;

queue<int,list<int>>q2(q1);

(3) 如何实现固定大小的queue队列

在每一次元素入队列前都判断当前的队列是否满,用双向链表做queue 的底层容器可以实现

例子2:

#include<iostream>
#include<list>
#include<queue>
using namespace std;
#define QUEUE_SIZE 50 //固定大小;
int main()
{
queue<int,list<int>> q;
if(q.size(QUEUE_SIZE) )
   q.push(51);
if(q.size(QUEUE_SIZE) )
   q.push(36);
if(q.size(QUEUE_SIZE))
   q.push(28);
while(!q.empty() )
{
   cout<<q.front()<<endl;
   q.pop();
}
return 0;
}

例子3:(与作业题的代码相似)


#include<iostream>
#include<cstdio>
#include<queue>
#include<stdlib>
using namespace std;
int main()
{
register int i,j;
int m,n;
char c[6];
int x,y;
while(scanf("%d %d",&n,&m)!=EOF)
{
   queue<int> Q[10000];
   for(i=1;i<m;i++)
   {
    scanf("%s",&c);
    if(strcmp(c,"INT") == 0)
    {
     for(j=1;j<=n;j++)
     {
      while(!Q[j].empty())
      {
       Q[j].pop();
      }
      continue;
     }
    }
    if(strcmp(c,"PUSH")==0)
    {
     scanf("%d %d",&x,&y);
     Q[x].push(y);
     continue;
    }
    if(strcmp(c,"POP")==0)
    {
     scanf("%d ",&y);
     if(Q[y].empty)
     {
      printf("NULL\n");continue;
     }
     else
     {
      printf("%d\n",Q[y].front());
     }
     Q[y].pop;
    }
   }
}
return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值