queue概述
queue是一种先进先出的数据结构,它有两个出口,queue允许新增元素、移除元素、从最低端加入元素、取得最顶端的元素。但除了最低端可以加入,最顶端可以取出,没有任何其他方法可以存取queue的其他元素,queue不允许有遍历行为。
将元素推入queue的操作称为push,将元素推出queue的操作称为pop。
queue定义完整列表
与stack类似,同样可以采用deque作为底部结构。
queue没有迭代器
//
// Created by Administrator on 2020/4/3.
//
#ifndef MYTINYSTLNEW_QUEUE_H
#define MYTINYSTLNEW_QUEUE_H
#include "Deque.h"
namespace TinySTL{
template<typename T,typename Sequence = TinySTL::deque<T>>
class queue{
private:
Sequence c;//成员只有一个底部容器
public:
typedef typename Sequence::value_type value_type;
typedef typename Sequence::difference_type difference_type;
typedef typename Sequence::size_type size_type;
typedef typename Sequence::reference reference;
typedef typename Sequence::const_reference const_reference;
public:
void push(const value_type& x){c.push_back(x);}
void pop(){c.pop_front();}
reference front(){return c.front();}
//单纯的返回值变成const是不能重载的
//要把函数变成const才可以重载
const_reference front()const{return c.front();}
reference back(){return c.back();}
//单纯的返回值变成const是不能重载的
//要把函数变成const才可以重载
const_reference back()const{return c.back();}
size_type size(){return c.size();}
bool empty(){return c.empty();}
public:
friend bool operator==(const queue<T,Sequence>& x,const queue<T,Sequence>& y);
friend bool operator<(const queue<T,Sequence>& x,const queue<T,Sequence>& y);
};
template<typename T,typename Sequence>
bool operator==(const queue<T,Sequence>& x,const queue<T,Sequence>& y){
return x.c == y.c;
}
template<typename T,typename Sequence>
bool operator<(const queue<T,Sequence>& x,const queue<T,Sequence>& y){
return x.c < y.c;
}
}
#endif //MYTINYSTLNEW_QUEUE_H
stack和queue除了可以用deque作为底部结构,也可以用list,list也可以满足stack和queue所需要的功能,除此之外,stack还可以使用vector作为底部结构!