C++ std::queue 用法與範例

本篇介紹 C++ 的 std::queue 用法,C++ std::queue 教學如下:

std::queue 是具有 FIFO 特性的容器配接器, 應用在有先進先出的情形。
queue 是一層容器的包裝, 背後是用 deque 實現的, 並且只提供特定的函數接口。

以下內容將分為這幾部份,

  • queue 常用功能
  • C++ queue 範例
  • queue 的優點與缺點

c++ 要使用 queue 容器的話,需要引入的標頭檔<queue>

queue 常用功能

以下為 std::queue 內常用的成員函式
push:把值加到尾巴
pop:移除頭的值
back:回傳尾巴的值
front:回傳頭的值
size:回傳目前長度
empty:回傳是否為空

C++ queue 範例

以下為 c++ queue 的各種操作用法,把元素加進 queue 的尾部使用 push()
把元素從 queue 頭部取出用 pop(),注意取出會將該元素從 queue 移除,
取得 queue 的最尾巴的元素使用 back()
取得 queue 的最頭部的元素使用 front(),注意取得並不會將該元素從 queue 移除,
取得 queue 目前裡面有幾個元素使用 size()

std-queue.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// g++ std-queue.cpp -o a.out -std=c++11
#include <iostream>
#include <queue>

using namespace std;

int main() {
queue<int> q;
q.push(1); // [1]
q.push(2); // [1, 2]
q.push(3); // [1, 2, 3]

cout << q.front() << endl; // 1
cout << q.back() << endl; // 3
cout << q.size() << endl; // 3

int a = q.front(); // copy
int &b = q.front(); // reference

cout << q.front() << " " << &q.front() << endl; // 印記體位置
cout << a << " " << &a << endl;
cout << b << " " << &b << endl; // 與 q.front() 記憶體位置相同

// 印出 queue 內所有內容
int size = q.size();
for (int i = 0; i < size; i++) {
cout << q.front() << " ";
q.pop();
}
cout << "\n";

// 印出 queue 內所有內容
/*while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
cout << "\n";*/

return 0;
}

輸出內容如下:

1
2
3
4
5
6
7
1
3
3
1 0xb77c70
1 0x7ffe63ead460
1 0xb77c70
1 2 3

queue 的優點與缺點

queue 的優點

  • 快速的把頭的值拿掉

queue 的缺點

  • 只能操作頭跟尾, 不能取得中間的值(根據FIFO特性)

參考
std::queue - cppreference.com
https://en.cppreference.com/w/cpp/container/queue
queue - C++ Reference
http://www.cplusplus.com/reference/queue/queue/
Queue in Standard Template Library (STL) - GeeksforGeeks
https://www.geeksforgeeks.org/queue-cpp-stl/

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
std::deque 用法與範例
std::vector 用法與範例
std::map 用法與範例
std::unordered_map 用法與範例
std::thread 用法與範例
std::mutex 用法與範例
std::condition_variable 用法與範例
std::sort 用法與範例
std::find 用法與範例
C++ 計算程式執行時間