C++ STL學習筆記之:佇列(queue)、雙端佇列(deque)與棧(stack)
阿新 • • 發佈:2020-07-19
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();