C++——stack和queue的模拟实现

Posted 小倪同学 -_-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++——stack和queue的模拟实现相关的知识,希望对你有一定的参考价值。

容器适配器

stack和queue没有自己独立的容器,而是对其他容器接口进行包装,STL中stack和queue默认使用的是deque容器,如下图。



从stack和queue的类模板声明中可以看出,它的模板有两个参数第一个是所存储的数据类型,第二个是它们封装的容器类型,这里默认是deque容器。

deque容器

queue和stack的模拟实现主要是调用deque容器实现

stack的模拟实现

namespace nzb

	template<class T, class Con = deque<T>>
	class stack
	
	public:
		// 入栈
		void push(const T& x)
		
			_c.push_back(x);
		
		// 出栈
		void pop()
		
			_c.pop_back();
		
		// 返回栈顶元素
		T& top()
		
			return _c.back();
		
		const T& top()const
		
			return _c.back();
		
		// 栈中有效元素个数
		size_t size()const
		
			return _c.size();
		
		// 判空
		bool empty()const
		
			return _c.empty();
		
	private:
		Con _c;// 调用deque容器
	;

queue容器的模拟实现

namespace nzb

	template<class T, class Con = deque<T>>
	class queue
	
	public:
		// 入队列
		void push(const T& x)
		
			_c.push_back(x);
		
		// 出队列
		void pop()
		
			_c.pop_front();
		
		// 返回队尾元素
		T& back()
		
			return _c.back();
		
		const T& back()const
		
			return _c.back();
		
		// 返回队首元素
		T& front()
		
			return _c.front();
		
		const T& front()const
		
			return _c.front();
		
		// 队列中元素个数
		size_t size()const
		
			return _c.size();
		
		// 队列的判空
		bool empty()const
		
			return _c.empty();
		
	private:
		Con _c;
	;

以上是关于C++——stack和queue的模拟实现的主要内容,如果未能解决你的问题,请参考以下文章

C++初阶第十二篇—stack和queue(stack和queue的常见接口的用法与介绍+priority_queue+容器适配器+仿函数+模拟实现)

C++入门stack和queue适配器介绍+ priority_queue的模拟实现仿函数基本概念提及

C++初阶----deque(双端队列)+stack queue模拟实现

C++:STL——栈队列和优先级队列的模拟实现

C++初阶 —— stack/queue

[ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现