本篇介紹 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()
,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
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
71
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++ 計算程式執行時間