/**
贴下堆栈,优先队列的使用,竞赛中优先队列常会用到,前面两个
也经常用,但效率低,一般自己用数组写
*/
#include <stack>
#include <queue>
using namespace std;
int main() {
//stack
stack<int> s1; //定义一个int 型栈s1
s1.push(x); //x入栈
s1.pop(); //只删除栈顶元素,不返回栈顶元素
s1.top(); //返回栈顶元素
s1.empty(); //当栈空时返回 true
s1.size(); //返回栈中元素个数
//queue
queue<int> q1;
q1.push(x); //将x 接到队列的末端
q1.pop(); //删除队首元素,并不返回弹出元素
q1.front(); //访问队首元素
q1.back(); //访问队尾元素
q1.empty(); //队空时返回true;
q1.size(); //返回队列中元素的个数
//priority_queue(优先队列) 头文件<queue> (强烈推荐 log n)
/**
优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。
但是它有一个特性,就是队列中最大元素总是位于队首,所以出队时,
并非按照先进先出的原则,而是将当前队列中优先级最高的元素出队。
元素比较默认按照元素由大到小的顺序,也可以重载 “<” 操作符来
重新定义比较规则。
*/
//基本操作
q.push(); q.top(); q.pop();
//改为小顶堆
priority_queue<int, vector<int>, greater<int> > que; //greater<int>后留空格
/**
如果优先队列的元素类型是结构体,可以通过在结构体中重载 “<”
操作符的方法来修改优先队列的优先性
*/
struct Info {
string name;
float score;
}
bool operator < (const Info &a) const {
return a.score < score;
} //按照score 由小到大的进行排列
return 0;
}
收藏于 2012-01-08
来自于百度空间
stack && queue && priority_queue 使用方法 (栈, 队列, 优先队列)
最新推荐文章于 2022-05-27 15:19:01 发布