1.stack
#include<stack>
stack<int>s;
s.empty()// 堆栈为空则返回真
s.pop()// 移除栈顶元素
s.push(4)// 在栈顶增加元素4
s.size() //返回栈中元素数目
s.top()// 返回栈顶元素
2.queue
#include<queue>
queue<int>q;
q.push()
q.pop()
q.front()
q.back()
q.empty()
q.size()
3.priority_queue
//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;
//greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)
q.top() //访问队头元素
q.empty() //队列是否为空
q.size() //返回队列内元素个数
q.push(i) //插入元素到队尾 (并排序)
用例:
#include<iostream>
#include <queue>
using namespace std;
int main()
{
//对于基础类型 默认是大顶堆
priority_queue<int> a;
//等同于 priority_queue<int, vector<int>, less<int> > a;
// 这里一定要有空格,不然成了右移运算符↓↓
priority_queue<int, vector<int>, greater<int> > c; //这样就是小顶堆
priority_queue<string> b;
for (int i = 0; i < 5; i++)
{
a.push(i);
c.push(i);
}
while (!a.empty())
{
cout << a.top() << ' ';
a.pop();
}
cout << endl;
while (!c.empty())
{
cout << c.top() << ' ';
c.pop();
}
cout << endl;
b.push("abc");
b.push("abcd");
b.push("cbd");
while (!b.empty())
{
cout << b.top() << ' ';
b.pop();
}
cout << endl;
return 0;
}