STL中佇列queue的常見用法

2022-05-02 13:36:11 字數 3079 閱讀 7326

**:

一、queue(佇列)簡介:

佇列也是一種邏輯資料結構,其具有先進先出的特性,只能在隊的前端進行刪除, 在隊的後端進行插入。針對這種特性,可以實現一些較為複雜的邏輯。在實際應用中,部分程式也正需要這樣一種順序進出的資料處理方式。使用這樣的邏輯處理方式,使得我們可以將更多精力放在如何處理順序邏輯之外的事情,對於程式設計、開發來講,提供了極大的方便。

同stack類似,queue也可以看成是容器的容器,內部是使用其它容器來存放具體資料。加了乙個外殼,使得我們的資料操作只能是在頭或尾。從尾部新增資料,從頭部取資料,從而實現fifo的特性。同stack一樣,內部預設資料存放容器為deque,若要用非預設容器初始化,必須要在模板中指定容器型別。

定義:需要定義兩個引數   1、元素型別(必須的)。

2、容器型別(不定義預設為deque)

如:queuea;

queueb,c,d;

二、佇列函式列表

queue入隊,如例:q.push(x); 將x 接到佇列的末端。

queue出隊,如例:q.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。

訪問queue隊首元素,如例:q.front(),即最早被壓入佇列的元素。

訪問queue隊尾元素,如例:q.back(),即最後被壓入佇列的元素。

判斷queue佇列空,如例:q.empty(),當佇列空時,返回true。

訪問佇列中的元素個數,如例:q.size()

三、成員函式詳細說明:

1. push

佇列中由於是先進先出,push即在隊尾插入乙個元素,如:

#include

using namespace std;

int main()

{ queueq;

q.push("hello world!");

q.push("china");

cout<2. pop

將佇列中最靠前位置的元素拿掉,是沒有返回值的void函式。如:

#include

using namespace std;

int main()

{ queueq;

q.push("hello world!");

q.push("china");

q.pop();

cout《原因是hello world!已經被除掉了。

3. size

返回佇列中元素的個數,返回值型別為unsigned int。如:

#include

using namespace std;

int main()

{ queueq;

cout<4. empty

判斷佇列是否為空的,如果為空則返回true。如:

#include

using namespace std;

int main()

{ queueq;

cout<5. front

返回值為佇列中的第乙個元素,也就是最早、最先進入佇列的元素。注意這裡只是返回最早進入的元素,並沒有把它剔除出佇列。如:

#include

using namespace std;

int main()

{ queueq;

q.push("hello world!");

q.push("china");

cout<6. back

返回佇列中最後乙個元素,也就是最晚進去的元素。如:

#include

using namespace std;

int main()

{ queueq;

q.push("hello world!");

q.push("china");

cout《其他的方法不是很常用,就不再研究了。

c++ stl佇列queue示例**1:

#include

using namespace std;

int main()

{ int e,n,m;

queueq1;

for(int i=0;i<10;i++) q1.push(i);

if(!q1.empty()) cout<<"dui lie bu kong\n";

n=q1.size();

cout《四、應用舉例:

1、瓷磚

【問題描述】

在乙個 w×h 的矩形廣場上,每一塊 1×1 的地面都鋪設了紅色或黑色的瓷磚。小林同學站在某一塊黑色的瓷磚上,他可以從此處出發,移動到上、下、左、右四個相鄰的且是黑色的瓷磚上。現在,他想知道,通過重複上述移動所能經過的黑色瓷磚數。

【輸入格式】

第 1 行為 h、w,2≤w、h≤50,之間由乙個空格隔開。  

以下為乙個 w 行 h 列的二維字元矩陣,每個字元為「.」「#」「@」,分別表示該位置為黑色的瓷磚、紅色的瓷磚,以及小林的初始位置。

【輸出格式】

輸出一行乙個整數,表示小林從初始位置出發可以到達的瓷磚數。

【輸入輸出樣例】

11 9

【問題分析】

本題是典型的「求連通塊」問題,可以採用經典的「寬度優先搜尋」演算法求解,使用佇列維護。

2、關係網路

【問題描述】

有 n 個人,他們的編號為 1~n,其中有一些人相互認識,現在 x 想要認識 y,可以通過他所認識的人來認識更多的人(如果 x 認識 y、y 認識 z,那麼 x 可以通過 y 來認識 z),求出 x 最少需要通過多少人才能認識 y。

【輸入格式】

第 1 行 3 個整數 n、x、y,n≤100,1≤x、y≤n。

接下來是乙個 n×n 的鄰接矩陣,a[i,j]=1 表示 i 認識 j,0 表示不認識。  

保證 i=j 時,a[i,j]=0,並且 a[i,j]=a[j,i]。行中的每兩個數之間用乙個空格分開。

【輸出格式】

輸出一行乙個數,表示 x 認識 y 最少需要通過的人數。

【樣例輸入】

5 1 5

0 1 0 0 0

1 0 1 1 0

0 1 0 1 0

0 1 1 0 1

0 0 0 1 0

【樣例輸出】

【問題分析】

STL 中佇列的使用 queue

基本操作 push x 將x壓入佇列的末端 pop 彈出佇列的第乙個元素 隊頂元素 注意此函式並不返回任何值 front 返回第乙個元素 隊頂元素 back 返回最後被壓入的元素 隊尾元素 empty 當隊列為空時,返回true size 返回佇列的長度 使用方法 標頭檔案 include 宣告方法...

STL中佇列的相關操作

基本操作 push x 將x壓入佇列的末端 pop 彈出佇列的第乙個元素 隊頂元素 注意此函式並不返回任何值 front 返回第乙個元素 隊頂元素 back 返回最後被壓入的元素 隊尾元素 empty 當隊列為空時,返回true size 返回佇列的長度 include include using ...

STL練習 queue 佇列

一.定義 queue 資料型別 line 二.基本操作 push入隊 e.g.line.push 12 12入隊 pop出隊 e.g,line.pop 出隊 size返回元素個數 e.g.line.size 若佇列有4個元素,返回 4 front返回第乙個元素e.g.line.front 若隊首為 ...