c++学习笔记-----stack和栈

本文介绍了C++中的三种容器适配器:stack、queue和priority_queue,详细阐述了它们的原理、使用方法以及为何在STL中选择deque作为stack和queue的默认底层容器。
摘要由CSDN通过智能技术生成

目录

一、stack介绍及使用

(一)stack介绍

(二)stack使用

二、queue的介绍和使用

(一)queue的介绍

(二)queue的使用

三、priority_queue(优先队列)的介绍和使用

(一)priority_queue(优先队列)的介绍

(二)priority_queue的使用

(四)deque介绍

(一)deque原理介绍

(二)deque的缺陷

(三)为什么选择deque作为stack和queue的底层默认容器


一、stack介绍及使用

(一)stack介绍

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口,而stack容器适配器相当于借用deque(双端队列)的底层结构来实现stack结构。

(二)stack使用

template<class T, class Con = deque<T>>//类模板定义
	class stack
	{
	public:
		stack()//不需要编写构造函数,该容器适配器已经实现过了
		{}
//入栈
		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;

	};

从栈的接口中可以看出,栈实际是一种特殊的vector,因此也可以使用vector完全可以模拟实现stack。
 

二、queue的介绍和使用

(一)queue的介绍

队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端
提取元素,队列同样作为容器适配器实现。


(二)queue的使用

template<class T, class Con = deque<T>>
	class queue
	{
	public:
//构造函数不需要自己实现
		queue()
		{}
//入队列
		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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ishao97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值