队列和栈的头文件以及常用函数
#include<stack> 先进后出
using namespace std;
stack <类型> s(变量);
s.pop() 删除栈顶元素
s.empty() 判断栈是否为空,为空返回1
s.push(i) 将i压入栈中
s.top() 返回栈顶元素
s.size() 返回栈中元素的数目
#include<queue> 先进先出
using namespace std;
queue <类型> s;
s.push(i)将元素i压入队列
s.pop() 删除前段的元素,就是先进去的元素
s.size() 返回队列中元素的个数
s.empty() 判断队列是否为空,为空返回1
s.front() 返回队列中的元素,返回最先进去的元素
优先队列的定义以及常用函数
#include<queue>
using namespace std;
priority_queue<类型 > que;//取出的值为当前最大值 即降序
priority_queue<int,vector<int>,greater<int> > que2
//升序。,取出来的是当前的最小值 ,注意最后两个尖括号中间要有空格
que.push(i) 元素入队
que.pop() 队首元素出队
que.top() 取队首元素
que.empty() 如果队列为空,则返回true(1),否则返回false(0)
que.size() 返回优先队列中拥有的元素个数
定义优先队列的其他方式:
#include<iostream> #include<queue> #include<vector> using namespace std; struct stu{ int a; bool friend operator<(const stu &x,const stu &y){ return x.a<y.a;// 从大到小 // return x.a>y.a//从小到大 相当于priority_queue<int ,vector<int>,greator<int > >que; } }; priority_queue<stu>que; int main(){ int n; stu x; cin>>n; for(int i=1;i<=n;i++){ cin>>x.a; que.push(x); } while(que.size()){ printf("%d ",que.top().a); que.pop(); } } // 10 // 1 2 3 9 8 7 6 5 4 0
在结构体中加上一个重载。可以实现优先队列的升序排序与降序排序