C++ 佇列
C++ 佇列
佇列儲存多個元素,遵循特定的順序,稱為FIFO。
FIFO 代表先進先出。要理解 FIFO,可以想象超市裡排隊的人。第一個排隊的人也是第一個可以付款離開超市的人。這種組織元素的方式在計算機科學和程式設計中稱為 FIFO。
與 vector 不同,佇列中的元素不能透過索引號訪問。由於佇列元素在末尾新增,在開頭移除,您只能訪問開頭或末尾的元素。
要使用佇列,您必須包含 <queue>
標頭檔案
// 包含 queue 庫
#include <queue>
建立佇列
要建立佇列,請使用 queue
關鍵字,並在尖括號 <>
中指定它應儲存的值的型別,然後是佇列的名稱,例如:queue<type> queueName
。
// 建立一個名為 cars 的字串佇列
queue<string> cars;
注意:佇列的型別(在我們示例中為 string)在聲明後無法更改。
注意:您不能在宣告時新增元素,就像您可以對 vector 所做的那樣
queue<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
新增元素
要將元素新增到佇列,您可以在宣告佇列後使用 .push()
函式。
.push()
函式將元素新增到佇列的末尾
示例
// 建立一個字串佇列
queue<string> cars;
// 向佇列新增元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
佇列將如下所示
Volvo (隊首(第一個)元素)
寶馬
福特
Mazda (隊尾(最後一個)元素)
訪問佇列元素
您無法像使用 陣列和 vector 那樣透過索引號訪問佇列元素。
在佇列中,您只能使用 .front()
和 .back()
分別訪問隊首或隊尾的元素。
示例
// 訪問隊首元素(第一個也是最舊的)
cout << cars.front(); // 輸出 "Volvo"
// 訪問隊尾元素(最後一個也是最新的)
cout << cars.back(); // 輸出 "Mazda"
自己動手試一試 »
更改隊首和隊尾元素
您還可以使用 .front
和 .back
來更改隊首和隊尾元素的值。
示例
// 更改隊首元素的值
cars.front() = "Tesla";
// 更改隊尾元素的值
cars.back() = "VW";
// 訪問隊首元素
cout << cars.front(); // 現在輸出“Tesla”,而不是“Volvo”
// 訪問隊尾元素
cout << cars.back(); // 現在輸出“VW”,而不是“Mazda”
自己動手試一試 »
移除元素
您可以使用 .pop()
函式從佇列中移除一個元素。
這將移除隊首元素(新增到佇列的第一個也是最舊的元素)。
示例
// 建立一個字串佇列
queue<string> cars;
// 向佇列新增元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// 移除隊首元素 (Volvo)
cars.pop();
// 訪問隊首元素(現在是 BMW)
cout << cars.front();
自己動手試一試 »
獲取佇列的大小
要查詢佇列中有多少個元素,請使用 .size()
函式。
檢查佇列是否為空
使用 .empty()
函式來查詢佇列是否為空。
.empty()
函式在佇列為空時返回 1
(true),否則返回 0
(false)。
示例
queue<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
cout << cars.empty(); // 輸出 0 (非空)
自己動手試一試 »
棧和佇列
佇列經常與 棧一起提及,棧是上一頁中描述的類似資料結構。