STL - queue用法總結

(我的STL相關的博客目錄:https://blog.csdn.net/Kprogram/article/details/90408011

(queue-c++官網:http://www.cplusplus.com/reference/queue/

queue 是數據結構 “隊列”s,擁有元素先進先出的特性。如果用數組來作爲隊列,長度是有限的,而且需要儲存隊列首尾的指針,不同於棧,隊列還要考率元素出隊列之後,留下的空擋該怎麼處理。stl提供了一個不定長容器queue來作爲隊列,queue表留有有隊列操作的各種成員函數,方便實用。

0 - 頭文件:queue  命名空間:std

#include <queue>
using namespace std;

1 - 構建一個queue:queue<typename> name 

    typename指的是隊列內數據類型,可以是 int, double, 可以是struct, class, 也可以是 queue, string等等。總之是一個數據對象都行。

    name 是你構建的隊列的名字,符合變量命名法則就行。

    例:構建一個 int 類型的隊列, 名字叫做 Q。

queue<int> Q;

2 - 使用queue:常用成員函數 ( 假設你創建的queue對象名字叫 Q )

    (粉紅色的函數爲常用函數!大部分情況下這些函數就夠用了)

無參函數:

    empty():如果queue爲空,返回True, 反之則返回 False。

    fornt():返回隊列第一個元素。

    back():返回隊列最後一個元素。

    pop():刪除隊列第一個元素,並不返回元素(一般與front()配合使用:先返front(),再pop(),相當於出隊列操作)。

    size():返回queue內數據的個數(相當於數組長度)。

#一般用法:(假如是一個int類型的隊列)
while(!Q.empty()) {//當隊列不爲空
    int I = Q.front(); Q.pop();//元素出隊列
    ...//對I的某些操作

有參函數:

    push(type):把一個數據(type)壓入棧頂(相當於入棧)。

        因爲對於隊列,push等同於push_back,所以queue 沒有push_back成員函數!(已經試過了會報錯)

    swap(Q1):交換Q 和 Q1 中的內容(Q1是另一個swap對象)。

//假設隊列內的數據類型是data
class data {
  int a;
  int b;
public:
  data(int x, int y):a(x), b(y) {}
};
//push:
data d(1,2);
Q.push(d); 
//或者
Q.push(data(1,2)); 

    push的優化:emplace函數(點擊藍色字體>emplace<)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章