queue

概念

STL(标准模板库)中的 queue 是 C++ 中的队列容器。实现了队列的基本功能 $FIFO$。

主要特点

  1. **先进先出 (FIFO)**:queue 是一种先进先出(FIFO)数据结构,元素的插入在队尾进行,元素的移除在队首进行。
  2. 底层实现queue 通常使用双端队列(deque)或链表作为底层实现。
  3. 限制操作:只能访问队首元素(front())、队尾元素(back()),以及执行入队(push())和出队(pop())操作。

基本用法

1. 创建和初始化

1
2
3
4
5
6
7
8
9
10
11
#include <queue>
#include <iostream>

using namespace std;

int main() {
queue<int> q; // 创建一个空的 queue

return 0;
}

2. 元素操作

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
#include <queue>
#include <iostream>

using namespace std;

int main() {
queue<int> q;

// 入队
q.push(1); // 在队尾插入 1
q.push(2); // 在队尾插入 2
q.push(3); // 在队尾插入 3

// 访问队首和队尾元素
cout << "Front: " << q.front() << endl; // 输出队首元素 1
cout << "Back: " << q.back() << endl; // 输出队尾元素 3

// 出队
q.pop(); // 删除队首元素 1

// 访问修改后的队首和队尾元素
cout << "Front: " << q.front() << endl; // 输出新的队首元素 2
cout << "Back: " << q.back() << endl; // 输出队尾元素 3

return 0;
}

3. 队列状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <queue>
#include <iostream>

using namespace std;

int main() {
queue<int> q;

// 检查队列是否为空
if (q.empty()) {
cout << "Queue is empty." << endl;
}

// 入队
q.push(1);

// 检查队列大小
cout << "Size: " << q.size() << endl; // 输出队列的大小

return 0;
}

常用成员函数

  • 元素操作

    • push(const T& value):在队尾插入一个元素。
    • pop():移除队首元素。
    • front():返回队首元素的引用。
    • back():返回队尾元素的引用。
  • 状态检查

    • empty():检查队列是否为空,返回布尔值。
    • size():返回队列中元素的数量。

queue
http://pikachuxpf.github.io/posts/7ffd7f63/
作者
Pikachu_fpx
发布于
2024年7月23日
许可协议