1.概念
队列是一种先进先出(First In, First Out,FIFO)的数据结构,这意味着最先加入队列的元素最先被移除。我们可以将队列想象成一排排队的人,新来的总是站在队尾,队首的人先离开。
2.基本操作
- 入队(Enqueue):将元素加入队尾。
- 出队(Dequeue):将队首元素移除并返回。
- 窥视(Peek 或 Front):返回队首元素但不移除它。
- 判空(IsEmpty):检查队列是否为空。
3.简单实现
template<class T, class Container = list<T>>
class Queue
{
public:
Queue() {}
size_t size() {return q.size();}
bool empty() {return q.empty();}
void push(const T& x = T()) {q.push_back(x);}
void pop() {q.pop_front();}
T& front(){return q.front();}
T& back(){return q.back();}
const T& front()const{return q.front();}
const T& back()const{return q.back();}
private:
Container q;
};
4.使用场景
- 操作系统中的任务调度:多个进程按顺序执行。
- 打印队列:打印作业按顺序处理。
- 广度优先搜索(BFS):在图的遍历中使用队列。
- 缓冲区:在数据流处理(如网络数据包)时,使用队列来缓冲数据。