STL提供了三個容器適配器:queue、priority_queue、stack。這些適配器都是包裝了vector、list、deque中某個順序容器的包裝器。注意:適配器沒有提供迭代器,也不能同時插入或刪除多個元素。下面對各個適配器進行概括總結。

(1)stack用法
#include <stack>
template < typename T, typename Container=deque > class stack;
可以使用三個標準順序容器vecotr、deque、list中的任何一個作為stack的底層模型。
bool stack<T>::empty()                             //判斷堆棧是否為空
void stack<T>::pop()                                //彈出棧頂數據
stack<T>::push(T x)                                 //壓入一個數據
stack<T>::size_type stack<T>::size()        //返回堆棧長度
T stack<T>::top()                                    //得到棧頂數據

(2)queue用法
#include <queue>
template<typename T, typename Container = deque<T> > class queue;
第一個參數指定要在queue中存儲的類型,第二個參數規定queue適配的底層容器,可供選擇的容器只有dequeue和list。對大多數用途使用默認的dequeue。
queue<T>::push(T x)
void queue<T>::pop()
T queue<T>::back()
T queue<T>::front()
queue<T>::size_type queue<T>::size()
bool queue<T>::empty()

(3)priority_queue用法
#include <queue>
template <typename T, typename Container = vector<T>, typename Compare = less<T> > class priority_queue;
priority_queue也是一個隊列,其元素按有序順序排列。其不采用嚴格的FIFO順序,給定時刻位于隊頭的元素正是有最高優先級的元素。如果兩個元素有相同的優先級,那么它們在隊列中的順序就遵循FIFO語義。默認適配的底層容器是vector,也可以使用deque,list不能用,因為priority_queue要求能對元素隨機訪問以便進行排序。
priority_queue<T>::push(T x)
void priority_queue<T>::pop()
T priority_queue<T>::top()
priority_queue<T>::size_type priority_queue<T>::size()
bool priority_queue<T>::empty()

標準庫默認使用元素類型的<操作符來確定它們之間的優先級關系,用法有三:(下文轉自http://www.cnblogs.com/vvilp/articles/1504436.html

優先隊列第一種用法,通過默認使用的<操作符可知在整數中元素大的優先級高。
priority_queue<int> qi;
示例中輸出結果為:9 6 5 3 2

優先隊列第二種用法,建立priority_queue時傳入一個比較函數,使用functional.h函數對象作為比較函數。
priority_queue<int, vector<int>, greater<int> >qi2;
示例2中輸出結果為:2 3 5 6 9

優先隊列第三種用法,是自定義優先級。
struct node
{
    friend bool operator< (node n1, node n2)
    {
        return n1.priority < n2.priority;
    }
    int priority;
    int value;
};
priority_queue<node> qn;
在示例3中輸出結果為:
優先級  值
9          5
8          2
6          1
2          3
1          4
在該結構中,value為值,priority為優先級。通過自定義operator<操作符來比較元素中的優先級。注意:必須是自定義<操作符才行,把上述的結構中的<操作符改成>編譯不通過。