1. 栈
关于栈简单的理解就是一个 “先进后出”的容器。下面为基本的操作:
#include <stack> 头文件
stack<int> s 创建一个 存储 int 型 的栈 ,类似的 int 还可以 改为:double float char 或者 结构体
s.push(x) 让 x 这个元素进栈
s.pop() 栈中的 第一个 元素出栈
s.top() 调用栈的第一个元素
s.enpty() 判断栈是否为空,如果为空 返回 1,如果不为空 返回 0
2.队列
上面提到 栈的 理解,这里 队列的理解就是 一个 “先进先出” 的容器,下面是基本操作:
#include <queue> 头文件
queue<int> q 创建一个空队列 <int> 这里 与上面 栈的功能相同
q.push(x) 进队列
q.front() 调用队列的第一个元素
q.pop() 队列中的第一个元素 出队列
q.empty() 判断 队列是否为空,若为空 返回 1, 若不为空 返回 0
3.优先队列
上面已经简单的介绍了队列,那么优先队列呢与上面的队列 和 栈 是不同的,所谓优先就是 里面存储的元素 都对应一个 优先值,哪个元素的优先值大 那么就优先 出去。这里 优先队列 我们存储 结构体 元素 , 比较 容易 体现出 优先 二字的所在.下面是 一些基础操作:
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
struct node
{
int power;
int order;
};
bool operator < (const node s1, const node s2)
{
if(s1.power == s2.power)
return s1.order > s2.order;
else
return s1.power < s2.power;
}
int main()
{
priority_queue<node> q;
node temp;
temp.power = 1;
temp.order = 2;
q.push(temp);
cout<<q.top().order<<endl;
return 0;
}