版权声明:转载请注明出处~~~ https://blog.csdn.net/lesileqin/article/details/88926411
栈(先进后出)
1)头文件
#include<stack>
2)定义方式
stack<数据类型> s;
数据类型可以是int、char、float、double、结构体等等。
3)常用基本操作
s.empty(); //栈是否为空
s.top(); //取出栈顶元素
s.push(X); //压入新的元素
s.pop(); //删除栈顶元素
s.size(); //返回栈中元素数目
队列(先进先出)
1)头文件
#include<queue>
2)定义方式
queue<数据类型> q;
3)常用基本操作
q.back(); //返回最后一个元素
q.empty(); //判断队列是否为空
q.front(); //返回队头元素
q.pop(); //删除队头
q.push(X); //新元素入队
q.size(); //返回队列元素个数
优先队列(priority_queue)
在优先队列中,数据元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。
1)头文件
#include<queue>
2)声明方式(掌握普通方法即可)
a.普通方法
priority_queue<int> q; //按照元素从大到小出队
priority_queue<int,vector<int>,greater<int> > q; //按照元素从小到大出队
//特别注意:☝ 这个位置要有一个空格
b.自定义优先级
struct cmp
{
bool operator() (int x,int y)
{
return x>y; //x小的优先级最高
}
};
priority_queue<int,vector<int>,cmp> q;
//其中,第二个参数为容器类型。第三个为比较函数
c.结构体声明方式
struct node{
int x,y; //y为值,x为优先级
friend bool operator < (node a,node b)
{
return a.x > b.x; //x小的优先级高
}
};
priority_queue<node> q;
3)常用基本操作与queue一模一样
栈和队列的应用与详解请访问:
https://blog.csdn.net/lesileqin/article/details/85058354
练习题:(单击即可访问)
POJ 2559 Largest Rectangle in a Histogram(选做)