• queue队列是一种先进先出(FIFO)容器
  • queue支持任意基本数据类型和STL容器
  • queue定义于​​queue.h​​​,命名空间​​std​

一、构造函数

作用

代码

说明

定义一个queue

queue<typename> q;

typename可以是任意基础数据类型或STL容器

二、访问queue内元素

  • 由于队列本身是一个先进先出的限制性结构,因此STL中只能访问队首和队尾元素
  • 访问队首:​​queue.front()​
  • 访问队尾:​​queue.back()​
#include <iostream>
#include <queue>
using namespace std;

int main()
{
queue<int> q;

for(int i=0;i<5;i++)
q.push(i);

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

return 0;
}

//输出:0 4

三、常用操作

  • 设有queue容器q

操作

代码

时间复杂度

说明

元素x入队

q.push(x)

O(1)

-

队首出队

q.pop()

O(1)

-

队列判空

q.empty()

O(1)

返回一个bool类型

访问队首元素(不影响队列)

q.front()

O(1)

如果队列为空,front()方法会报错

访问队尾元素(不影响队列)

q.back()

O(1)

如果队列为空,back()方法会报错

获得queue内元素个数

q.size()

O(1)

-

#include <iostream>
#include <queue>
using namespace std;

int main()
{
queue<int> q;

for(int i=0;i<5;i++) //push()方法
q.push(i);

cout<<q.front()<<" "<<q.back()<<endl; //front()、back()方法

cout<<"size:"<<q.size()<<endl; //size()方法

cout<<"队列为空吗:"<<q.empty()<<endl; //empty()方法

for(int i=0;i<3;i++) //pop()方法
q.pop();

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

return 0;
}

四、常见用途

  • 实现广度优先搜索时,可以用queue代替手动实现队列
  • 延申:
  • STL中还有两种队列,双端队列​​deque​​​和优先队列​​priority_queue​