C++ stack queue priority_queue

Connor

栈、队列、和优先队列(堆)

stack用法

使用前先导入
#include<stack>

然后创建
stack <type> s;

然后一堆操作

压栈
s.push(i);
出栈
s.pop();
访问栈顶
s.top();
获取长度
s.size();
判断是否为空
s.empty();

想必从第一节看过来的不用解释都能看懂啦~

不能使用迭代器(栈怎么能遍历呢?)

queue用法

使用前先导入
#include<queue>

然后创建
queue <type> q;

然后一堆操作~

入队
q.push(i);
出队
q.pop();
访问队首
q.front();
访问队尾
q.back();
获取长度
q.size();
判断是否为空
q.empty();

想必从第一节看过来的不用解释都能看懂啦~

不能使用迭代器(队列怎么能遍历呢?)

priority_queue用法

优先队列!堆!!

使用前先导入
#include<priority_queue>

然后创建
priority_queue <type> pq;
(默认是一个大根堆)

如果想要一个小根堆呢?
只需要这么写
priority_queue<int, vector<int>, greater<int>> pq;
==注意,<>里的三个参数缺一不可==

一些操作

插入堆
pq.push(i);
删除堆顶元素
pq.pop();
访问堆顶元素
pq.top();
判断是否为空
pq.empty();
返回元素数量
pq.size();

想必从第一节看过来的不用解释都能看懂啦~

不过不能直接堆排序~,想输出排序结果的话,可以使用

1
2
3
4
while(!pq.empty()){
cout << pq.top() << ' ';
pq.pop();
}

就可以啦~

不能使用迭代器(堆怎么能遍历呢)


STL暂时告一段落啦~~~

  • Title: C++ stack queue priority_queue
  • Author: Connor
  • Created at : 2025-10-22 16:18:17
  • Updated at : 2025-10-22 16:25:31
  • Link: https://redefine.ohevan.com/2025/10/22/stack-queue-pq/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
C++ stack queue priority_queue