队列总结
2026-01-09 19:26:52
发布于:浙江
队列总结
一.STL 中的循环队列 queue 先进先出
1.queue 的使用
需要添加头文件:#include<queue>
2.queue 定义
(1)格式:queue<数据类型> 队列名;
(2)举例:
queue<int> q;//定义一个空的队列 q,可以存储的元素类型为 int 类型
struct Node{
int x,y;
};
queue<Node>q;//定义一个空的队列 q,可以存储的元素类型为 Node类型
3.queue 的成员函数

注意:
①push
struct Node{
int x,y;
}t;
queue<Node>q;
q.push((Node){x,y});//x,y是结构体变量成员变量,用{}括起来
q.push(t);//t是Node类型
②输出队列元素
while(!q.empty()){//队列非空
cout<<q.front();//输出队首元素
q.pop();
}
③queue 只能队首出,队尾进 (先进先出) ;只能在队尾 push(),队首 pop();queue 不支持下标访问!
二.STL 中的双端队列 deque
-
deque 的使用
需要添加头文件:#include<deque> -
deque 定义
格式:deque<数据类型> 队列名;
deque<int> dq;
3.deque 的常用函数

注意:
①可以在队首和队尾 进行删除和插入 (双端都可以进行入队和出队)
②可以通过下标访问:可以使用 dq[0]
三.STL 中的优先队列
普通的队列是一种先进先出的数据结构,元素在队尾追加,从队首删除。
在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。
优先队列具有最高级先出(first in,largest out)的行为特征。
1.priority_queue 的使用
需要添加头文件:#include<queue>
2.priority_queue 定义
(1)格式:priority_queue<数据类型>队列名;
(2)举例:
priority_queue<int>q;//从大到小排序
priority_queue<int,vector<int>,less<int> >q;//从大到小排序
priority_queue<int,vector<int>,greater<int> >q;//从小到大排序
3.priority_queue的成员函数
q.push(x); // 将x入队 无返回值
q.pop();// 令队首元素出队 无返回值
q.top() // 获得队首元素 有返回值
q.empty() // 检测队列是否为空,返回true为空 返回false为非空 有返回值
q.size() // 返回队列元素个数 有返回值
4.练习
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int>q;//从大到小排序
//priority_queue<int,vector<int>,less<int> >q;
int main(){
for(int i=1;i<=10;i++){
q.push(i);
}
cout<<q.size()<<endl;
while(!q.empty()){
cout<<q.top()<<" ";
q.pop();
}
return 0;
}
/*
输出:
10
10 9 8 7 6 5 4 3 2 1
*/
这里空空如也











有帮助,赞一个