/**
貼下堆棧,優先隊列的使用,競賽中優先隊列常會用到,前面兩個
也經常用,但效率低,一般自己用數組寫
*/
#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 使用方法 (棧, 隊列, 優先隊列)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.