【C++模拟实现队列】

queue的基本用法

队列是一种数据先进先出的一种数据结构,是一种容器适配器,queue可以使用底层模板deque来实现。但queue不允许随机访问队列的元素,没有迭代器,不能遍历queue,queue可以实现尾部插,和队首删除,可以访问到队首和队伍的数据。检查队列大小和判断队列是否为空的功能。

#include <queue>

queue<int> q;
q.push(const T& x);//将数据尾插
q.pop();//删除队首的数据
q.front();//获得队首的数据
q.back();//获得队尾的数据
q.size();//获得队列的大小
q.empty();//判断队列是否为空

模拟底层实现queue

namespace New_queue{
	template<class T,class Container = deque<T>>
	//默认适配deque
	//queue不适配vector但可以适配list
	class queue{
	public:
		void push(const T& x){
			_con.push_back(x);
		}
		void pop(){
			_con.pop_front();
		}
		const T& front(){
			return _con.front();
		}
		const T& back(){
			return _con.back();
		}
		size_t size(){
			return _con.size();
		}
		bool empty(){
			return _con.empty();
		}
	private:
		Container _con;
	};
}

因为成员变量是一个自定义的变量,会自己调用自己的构造函数,所以构造一个queue的类的时候我们不在需要自己构造了。默认的自定义的类型是deque,如果在定义一个对象的时候用了list做模板,成员变量就是list,如果使用了vector做为模板,则会报错,因为vector没有pop_front();的接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值