当前位置:   article > 正文

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

【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;
	};
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

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;
	};
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/439629
推荐阅读
  

闽ICP备14008679号