STL之queque队列

来源:互联网 发布:消防知识知多少班会 编辑:程序博客网 时间:2024/05/17 07:45

queue队列容器

一、原理

    queue 队列也是一个线性存储表,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出FIFOFirst In First Out)表。插入一端称为队尾,删除一端称为队首。 

    默认使用双端队列deque来实现,queue也可看成一个容器适配器,将 deque 容器转换为 queue 容器。当然,也可以利用其他合适的序列容器作

为底层实现queue容器。

51、queue队列容器 - EdwardLewis - 墨涵天地

C++ STLqueue队列的泛化,是通过模板类型,将默认的deque双端队列类型导入,在内部创建一个序列容器对象,来处理 queue队列的数据存储和操作,包括queue队列是否为空、取队首元素、取队尾元素、元素入队和元素出队等。由于仅需要取队首和队尾元素的操作,因此queue队列容器并不提供任何类型的迭代器。

二、应用

1、创建

1queue() 

    默认的构造函数,创建一个空的 queue 对象。

queue<int> q;//使用默认的双端队列为底层容器创建了一个空的queue队列对象q,数据元素为int类型

2queue(const queue&) 

复制构造函数,用一个queue对象创建新的queue对象。 

//queue<int, list<int> > q1; 

queue<int, list<int> > q2(q1);//以双向链表为底层容器的queue对象

2、入队和出队

void push(const value_type& x) //插入队列

void pop()//出队,从队列中删除

3、取队首尾元素

queue队列容器的front函数和back函数,可分别读取队首和队尾元素。 

1value_type& front() 

读取队列的队首元素。 

2value_type& back() 

读取队列的队尾元素。

4、其它

1bool empty() //判断空

2size_type size() //队列大小

三、例子

#include "iostream"

#include "queue"

using namespace std;

int main()

{

queue<int> q;

q.push(3);

q.push(12);

while(!q.empty()){

cout<<q.front()<<endl;

q.pop();

}

return 1;

}