队列也是一种特殊的线性表,特殊在于只允许在一端插入元素,在另一端删除元素,所以队列有先进先出的特性
队列的可以分为普通队列和带有优先级的队列
术语
队头:允许删除元素的一端
队尾:允许插入元素的一端
入队:向队列中插入元素操作
出队:从队列中删除元素操作
普通队列
#ifndef QUEUE_H_
#define QUEUE_H_
#include <tools/base/noncopyable.h>
#include "List/Deque.h"
template <typename T, typename Container = Deque<T>>
class Queue : noncopyable {
public:
Queue() = default;
~Queue() = default;
int size() const {
return m_container.size();
}
bool empty() const {
return m_container.empty();
}
T& front() const {
return m_container.front();
}
T& back() const {
return m_container.back();
}
void push(T elem){
m_container.push_back(elem);
}
void pop(){
m_container.pop_front();
}
// for unit test
void print(const char* name){
m_container.print(name);
}
private:
Cont