菏泽外贸网站建设公司,站长之家ip地址归属查询,网站的后台怎么做的,建设企业网站所遵循的一般原则queue是一种先进先出的数据结构#xff0c;他有两个出口允许新增元素#xff08;从最底端 加入元素#xff09;、移除元素#xff08;从最顶端删除元素#xff09;#xff0c;除了对于顶端和底端元素进行操作之外#xff0c;没有办法可以获取queue的其他元素即queue没有…queue是一种先进先出的数据结构他有两个出口允许新增元素从最底端 加入元素、移除元素从最顶端删除元素除了对于顶端和底端元素进行操作之外没有办法可以获取queue的其他元素即queue没有遍历行为基于deque的queue
针对deque进行操作封闭其底部的出口 和 前端的入口queue不被归类为容器而被归类为容器适配器
//定义在stl_config.h文件中
//但是没有找到 具体详情参见 参考链接
# ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
# define __STL_NULL_TMPL_ARGS
# else
# define __STL_NULL_TMPL_ARGS
# endiftemplate class T,class Sequence std::dequeT
class queue{//__STL_NULL_TMPL_ARGS会展开为 friend bool operator __STL_NULL_TMPL_ARGS(const queue x,const queue y);friend bool operator __STL_NULL_TMPL_ARGS(const queue x,const queue y);
public:typedef typename Sequence::value_type value_type;typedef typename Sequence::size_type size_type;typedef typename Sequence::reference reference;typedef typename Sequence::const_reference const_reference;
protected://底层容器Sequence c;
public://以下完全使用Sequence c的操作完成stack的操作bool empty() const {return c.empty();}size_type size() const {return c.size();}reference front() {return c.back();}const_reference front() const {return c.front();}reference back() const {return c.back();}const_reference back() {return c.back();}//deque 是两头可以进出queue 是末端进前端出 (所以先进者先出)void push(const value_type x){ c.push_back(x);}void pop(){return c.pop_front();}
};template class T,class Sequence
bool operator(const queueT,Sequencex,const queueT,Sequencey){return x.c y.c;
}template class T,class Sequence
bool operator(const queueT,Sequencex,const queueT,Sequencey){return x.c y.c;
}queue没有迭代器
考虑到只有queue需要满足先进先出的条件只有顶端的元素才有机会被外界取用因此 queue不需要提供遍历元素的迭代器
基于list的queue
queue需要的函数如 empty、size()、back、push_back、pop_back是链表也支持的使用范例
#include list
#include queueint main()
{std::queueint,std::listintlist_queue;list_queue.push(1);list_queue.push(3);list_queue.push(5);list_queue.push(7);std::cout list_queue.size() std::endl; //4std::cout list_queue.front() std::endl; //1list_queue.pop();std::cout list_queue.front() std::endl; //3list_queue.pop();std::cout list_queue.front() std::endl; //5list_queue.pop();std::cout list_queue.front() std::endl; //7std::cout list_queue.size() std::endl; //1
}