STL | stack 和 queue
stack
介绍
先进后出的适配器
头文件![](https://img2024.cnblogs.com/blog/2203591/202405/2203591-20240517171957888-166620577.png)
#include <stack>
template <class Type, class Container = deque <type>>
class stack
初始化
stack();
// 使用容器来构造一个栈,并保持原容器中的元素顺序
explict stack(const container_type& right);
例:
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main() {
vector<int> vec = { 1, 3, 5, 7 };
stack<int, vector<int>> st(vec);
cout << st.top() << endl; // 输出7
return 0;
}
函数
empty
删除栈顶元素
void pop();
push
压栈
void push(const Type& val);
size
返回栈的长度
size_type size() const;
swap
void swap(stack&other) noexcept;
top
返回栈顶元素的引用
reference top();
const_reference top() const;
运算符
- operator=
- operator<
- operator<=
- operator==
- operator>
- operator>=
queue
queue
介绍
先进先出的适配器
头文件
#include <queue>
// 默认底层容器为deque,可以指定为其他容器
template <class Type, class Container = deque<Type>>
class queue
初始化
queue();
explicit queue(const container_type& right);
函数
back
返回最后一个元素的引用
reference back();
const_reference back() const;
empty
bool empty() const;
front
返回第一个元素的引用
reference front();
const_reference front() const;
pop
void pop();
push()
将元素添加到队列尾部
void push(const Type& val);
size
size_type size() const;
swap
void swap(queue& other) noexcept;
操作符
- operator=
- operator<
- operator<=
- operator==
- operator>
- operator>=
priority_queue
介绍
底层数据结构为堆
对元素进行排序,以便最大的元素始终在最前面
头文件
#include <queue>
template <class Type, class Container=vector<type>,
class Compare=less <typename Container:: value_type>>
class priority_queue
初始化
priority_queue();
// const Traits& _comp 是一个比较函数对象
explicit priority_queue(const Traits& _comp);
...
...
例:
// 默认大根堆, 即每次取出的元素是队列中的最大值
priority_queue<int> pri_que1;
// 大根堆, 每次取出的元素是队列中的最大值,同第一行
priority_queue<int, vector<int>, less<int> > pri_que2;
// 小根堆, 每次取出的元素是队列中的最小值
priority_queue<int, vector<int>, greater<int> > pri_que3;
函数
- empty
- pop
- push
- size
- swap
- top
运算符
同queue