STL queue

queue单向队列与有点类似,栈是在栈顶存取数据,queue是在队尾存入数据,队头取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。

queue没有类似vector, list等的iterator迭代器, 所以不能够通过iterator进行遍历, 要遍历queue, 可以通过front, pop等操作进行组合。

一、模板

template <class T, class Container = deque<T> > class queue;

queue 模板类的定义在<queue>头文件中。

与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。

二、函数使用

构造函数:

创建一个空的queue: queue <int> q1;

                                       queue <double> q2;//默认deque容器

复制queue:

                  vector<int> a;

                 queue<int, vector<int> b(a);

数据基本操作:

入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素(队首),注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()

<pre name="code" class="cpp" style="color: rgb(68, 68, 68); font-size: 16px; line-height: 28px;">#include <stdafx.h>  

 
#include <iostream>  
#include <list>  
#include <queue>  
#include <string>  
using namespace std;  
  
void show(list<int>& l)  
{  
    cout << "list: ";  
    for(list<int>::iterator it = l.begin(); it != l.end(); ++it)  
        cout << *it << ' ';  
    cout << endl;  
}  
  
void show(queue<int, list<int> > q)  
{  
    cout << "queue: ";  
    while(!q.empty()){  
        cout << q.front() << ' ';  
        q.pop();  
    }  
    cout << endl;  
}  
int main()  
{  
    list<int> int_lst;  
    int_lst.push_back(1);  
    int_lst.push_back(2);  
    int_lst.push_back(3);  
    int_lst.push_front(0);  
    //show list  
    show(int_lst);  
      
    queue<int, list<int> > int_que(int_lst);  
  
    //push  
    cout << "push 4 into queue" << endl;  
    int_que.push(4);  
    show(int_que);    
      
    //front and back element  
    cout << "front: " << int_que.front() << endl;  
    cout << "back: " << int_que.back() << endl;  
      
    //pop  
    cout << "pop element" << endl;  
    int_que.pop();  
    show(int_que);  
      
    //size  
    cout << "size of queue: " << int_que.size() << endl;  
      
    return 0;  
}  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值