【STL详解 —— stack和queue的模拟实现】

STL详解 —— stack和queue的模拟实现

在这里插入图片描述
在这里插入图片描述

我们通过查库可知 stackqueue 的模板参数。
其中模板参数 Container 我们在上一篇文章已经介绍,具体可见:STL详解 —— stack和queue的介绍及使用

stack模拟

我们利用容器适配器来模拟实现 stack,我们可以使用一个已有的容器作为底层存储结构,并在其基础上封装一个类,实现栈的操作。这样就可以通过复用底层容器的成员函数来实现栈的功能。

具体要实现的成员函数包括:

成员函数函数作用
push压栈
pop出栈
top取栈顶元素
size获取栈里面的元素个数
empty判空

这里以vector为例来演示:

namespace qq
{
	template<class T, class Container = std::deque<T>>
	class stack
	{
	public:
		void push(const T& x)
		{
			_con.push_back(x);
		}

		void pop()
		{
			_con.pop_back();
		}

		size_t size()
		{
			return _con.size();
		}

		bool empty()
		{
			return _con.empty();
		}

		const T& top()
		{
			return _con.back();
		}
	private:
		Container _con;
	};
}

queue模拟

同理,我们再进行 queue 的模拟

deque 来模拟。

成员函数函数作用
push入队列
pop出队列
front获取对头元素
back获取队尾元素
size获取队列元素个数
empty判空
namespace qq
{
	template<class T, class Container = std::deque<T>>
	class queue
	{
	public:
		void push(const T& x)
		{
			_con.push_back(x);
		}

		void pop()
		{
			_con.pop_front();
		}

		size_t size()
		{
			return _con.size();
		}

		bool empty()
		{
			return _con.empty();
		}

		const T& front()
		{
			return _con.front();
		}

		const T& back()
		{
			return _con.back();
		}
	private:
		Container _con;
	};
}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值