一、queue介绍和使用
1.queue文档介绍
(1)队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器的一端插入元素,另一端提取元素。
(2)队列是作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类。queue提供一组特定的成员函数来访问其元素。元素从队尾入队,队头出队。
(3)底层容器可以是以下标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:
①empty:检测队列是否为空;
②size:返回队列中有效元素个数;
③front:返回队头元素的引用;
④back:返回队尾元素的引用;
⑤push_back:在队列尾部入队元素;
⑥pop_front:在队列头部出队元素。
(4)标准容器类deque和list满足了这些需求。若没有为queue实例化指定容器类,默认情况下使用标准容器deque。
2.queue的使用
二、模拟实现queue
#include <iostream>
#include <list>
using namespace std;
namespace MyQueue {
//默认底层容器采用list
template<class T, class Container = list<T>>
class queue {
public:
queue()
:_con()
{}
void push(const T& val) {
_con.push_back(val);
}
void pop() {
_con.pop_front();
}
T& front() {
return _con.front();
}
const T& front() const {
return _con.front();
}
T& back() {
return _con.back();
}
const T& back() const {
return _con.back();
}
size_t size() {
return _con.size();
}
bool empty() {
return _con.empty();
}
private:
Container _con;
};
}