- 队列是一种容器适配器,用于FIFO(先进先出)操作,从容器一端插入元素,另一端提取元素。
- 队列是作为容器适配器被实现的,queue提供一组特定的成员函数来访问元素,元素从队尾入队、队头出队。
- 底层容器可以是标准或特定容器类模板,需要支持的操作有:判空、尾部入队、头部出队、返回队头队尾元素、返回元素个数。标准容器类deque和list可以实现,若未指定,则默认使用deque。
用list模拟实现queue
- push实现:push_back – 尾插;
- pop实现:pop_front – 头删;
- front实现:front – 获取第一个元素;
template<class T>
class Queue
{
public:
void push(const T& val)
{
_q.push_back(val);
}
void pop()
{
_q.pop_front();
}
T& front()
{
return _q.front();
}
size_t size()const
{
return _q.size();
}
bool empty()
{
return _q.empty();
}
private:
list<T> _q;
};
![](https://img-blog.csdnimg.cn/20210410102448889.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2NjU5OTg3,size_16,color_FFFFFF,t_70)