STL 容器適配器

一.容器適配器
能夠用某種順序容器來實現(讓已有的順序容器以棧/隊列的方式工做)
1) stack: 頭文件 <stack>
棧 -- 後進先出
2) queue: 頭文件 <queue>
隊列 -- 先進先出
3) priority_queue: 頭文件 <queue>
優先級隊列 -- 最高優先級元素老是第一個出列
2
ios

容器適配器都有3個成員函數:
push: 添加一個元素;
top:   返回
棧頂部或隊頭元素的引用
pop:  刪除一個元素
容器適配器上沒有迭代器
STL中各類排序, 查找, 變序等算法都不適合容器適配器
3
1.stack
stack 是後進先出的數據結構
只能插入, 刪除, 訪問棧頂的元素
可用 vector, list, deque來實現
缺省狀況下, 用deque實現
用 vector和deque實現, 比用list實現性能好
template<class T, class Cont = deque<T> >
class stack {

};
4
stack 中主要的三個成員函數:
void push(const T & x);
將x壓入棧頂
void pop();
彈出(即刪除)棧頂元素
T & top();
返回棧頂元素的引用. 經過該函數, 能夠讀取棧頂
元素的值, 也能夠修改棧頂元素
5
2.queue
和stack 基本相似, 能夠用 list和deque實現
缺省狀況下用deque實現
template<class T, class Cont = deque<T> >
class queue {
……
};
一樣也有push, pop, top函數
push發生在隊尾
pop, top發生在隊頭, 先進先出
6
3.priority_queue
和 queue相似, 能夠用vector和deque實現
缺省狀況下用vector實現
priority_queue 一般用堆排序技術實現, 保證最大的元
素老是在最前面
執行pop操做時, 刪除的是最大的元素
執行top操做時, 返回的是最大元素的引用
默認的元素比較器是 less<T>
算法

 1 #include <queue>
 2 #include <iostream>
 3 using namespace std;
 4 int main() {
 5     priority_queue<double> priorities;
 6     priorities.push(3.2);
 7     priorities.push(9.8);
 8     priorities.push(5.4);
 9     while( !priorities.empty() ) {
10         cout << priorities.top() << " ";
11         priorities.pop();
12     }
13     return 0;
14 } //輸出結果: 9.8 5.4 3.2
相關文章
相關標籤/搜索