做ACM时, 时常用到这两个数据结构, 特别是处理树, 图等操作时, 似乎已经必不可缺了.
若自我构造, 则耗时巨多, 且效率堪忧. 故灵活运用, 即可如鱼得水, 信手拈来.
特记之
#include<stack>
#include<queue>
std:queue
std:stack
using namespace std;
queue:
线性表, 尾进头出
queue <int> qu;
qu.push(val);
qu.pop();
qu.back();
qu.front(); //队首
qu.empty();
qu.size();
优先队列, 也包含在#include<queue>中
priority_queue<int> pqu;
方法和queue一样, 只是最大的元素位于队首
如果优先队列的元素类型是结构体,可以通过在结构体中重载“<“操作符的方法来修改优先队列的优先性。
struct info {
string name;
float score;
bool operator < (const info &a) const { //按照score由小到大进行排列,如果要使用由大到小,使用“>”即可 return a.score<score; }
}
此进直接把结构体入队,则会按score的递减顺序排
stack<int>st;
stack<int>st1;
st.push(a);
st.pop();
st.top();
st.empty();
st.size();
st.swap(st1);