1. 程式人生 > 實用技巧 >C++ STL學習筆記之:佇列(queue)、雙端佇列(deque)與棧(stack)

C++ STL學習筆記之:佇列(queue)、雙端佇列(deque)與棧(stack)

queue(佇列)

定義一個名為 que 的儲存 int 型別元素的佇列:

queue<int> que;

入隊操作:

que.push(a);    // 其中a是一個int型別的變數

出隊操作:

que.pop();

但是在佇列為空時,進行出隊操作會出錯。所以需要先判斷一下佇列是否為空。

判斷佇列是否為空:

que.empty()

它返回一個 bool 值,如果佇列為空返回 true,否則返回 false。

隊首元素:

que.front();

隊尾元素:

que.back();

佇列中元素個數:

que.size();

清空佇列:
佇列沒有單獨的函式用來清空它,所以我們可以使用如下方法來清空佇列:

while (!que.empty())
    que.pop();

雙端佇列(deque)

區別於一般的佇列,只能從隊尾入隊,從隊首出隊;
雙端佇列是可以同時從隊首入隊和出隊,也可以同時從隊尾入隊和出隊的佇列。

定義一個名為 que 的存放 int 型別的雙端佇列(deque):

deque<int> que;

隊首元素:

que.front()

隊尾元素:

que.back()

判斷雙端佇列是否為空:

que.empty()

獲得雙端佇列的元素個數:

que.size()

從隊首入隊:

que.push_front(a);

從隊尾入隊:

que.push_back(a);

從隊首出隊:

que.pop_front();

從隊尾出隊:

que.pop_back();

清空雙端佇列:

因為雙端佇列沒有 pop() 方法,所以我們可以用 pop_front 或者 pop_back 代替。

while (!que.empty())
    que.pop_front();

while (!que.empty())
    que.pop_back();

當然,雙端佇列還有更方便的清空它自己的方法:

que.clear();

棧(stack)

既然講了佇列、雙端佇列,我們再來學習(複習一下)棧(stack)的使用。

定義一個名為 stk 的存放 int 型別的棧:

stack<int> stk;

獲得棧頂元素:

stk.top()

入棧操作:

stk.push(a);

出棧操作:

stk.pop();

判斷棧是否為空:

stk.empty()

棧中元素個數:

stk.size()

清空棧:

while (!stk.empty()) stk.pop();