【C++初阶】容器适配器模拟实现栈和队列(附源码)

这篇具有很好参考价值的文章主要介绍了【C++初阶】容器适配器模拟实现栈和队列(附源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.容器适配器

其实在使用模板时,我们不仅可以使用类模板,还可以使用容器模板,这就是一个容器适配器,我们可任意给模板实例化不同的容器,然后就可以使用容器里的接口

template<class T,class Containers>

我们知道,栈可以用数组实现也可以用链表实现,以前在C语言那里,如果我们想要两个底层不同的栈,要么写两个栈,要么用typedef,但这做不到自由控制;在C++中,我们可以容器适配器解决这个问题,数组链表秒切换。

 注意使用的接口必须是你实例化的容器所拥有的,否则会报错

例:

  vector容器没有头插(push_front)和头删(pop_front)接口

  list却有这两个接口,所以在使用时要特别注意。


二.模拟实现stack

 

库里栈的模板是这样的,这个deque是一个双端队列,它同时拥有vector和list的接口。 

 

【C++初阶】容器适配器模拟实现栈和队列(附源码),C++初阶,c++,开发语言,栈,队列 

上图是栈的接口,都很简单,栈符合先进后出,下面就让我们用容器适配器模拟实现栈吧。

 

源码

template<class T,class Containers=deque<T>>  //容器适配器
	class stack   //栈
	{
	public:
		void push(const T& val)   //入栈,即尾插
		{
			_con.push_back(val);
		}

		void pop()   //出栈,即尾删
		{
			_con.pop_back();
		}

		const T& top() const  //取栈顶元素
		{
			return _con.back();
		}

		bool empty()
		{
			return _con.size() == 0;
		}

		size_t size() const
		{
			return _con.size();
		}
	private:
		Containers _con;
	};

三.模拟实现queue

【C++初阶】容器适配器模拟实现栈和队列(附源码),C++初阶,c++,开发语言,栈,队列

【C++初阶】容器适配器模拟实现栈和队列(附源码),C++初阶,c++,开发语言,栈,队列 

队列和栈差不多,但队列是先进先出原则。 

源码

template<class T,class Containers=deque<T>>
	class queue   //队列
	{
	public:
		void push(const T&val)   //入队列,即尾插
		{
			_con.push_back(val);
		}

		void pop()   //出队列,即头删
		{
			_con.pop_front();
		}

		T& front()   //取队列的第一个元素
		{
			return _con.front();
		}

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

		bool empty()
		{
			return _con.size() == 0;
		}

		size_t size() const
		{
			return _con.size();
		}
	private:
		Containers _con;
	};

🐬🤖本篇文章到此就结束了, 若有错误或是建议的话,欢迎小伙伴们指出;🕊️👻

😄😆希望小伙伴们能支持支持博主啊,你们的支持对我很重要哦;🥰🤩

😍😁谢谢你的阅读。😸😼文章来源地址https://www.toymoban.com/news/detail-602310.html

到了这里,关于【C++初阶】容器适配器模拟实现栈和队列(附源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现

    适配器是一种设计模式 (设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。 例如我们常见的充电器就是一种适配器,它将我们常用的220V交流电压转化为4,5V (或者其他更高的电

    2023年04月26日
    浏览(48)
  • 容器适配器---deque和STL ---stack queue priority_queue的模拟实现 C++

    目录 一、容器适配器 deque原理 deque的缺陷 deque的优势 二、stack的模拟实现  三、queue的模拟实现 四、优先级队列的模拟实现 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户

    2024年02月02日
    浏览(43)
  • 【C++】STL之适配器---用deque实现栈和队列

    目录 前言 一、deque  1、deque 的原理介绍  2、deque 的底层结构  3、deque 的迭代器  4、deque 的优缺点   4.1、优点   4.2、缺点 二、stack 的介绍和使用  1、stack 的介绍  2、stack 的使用  3、stack 的模拟实现 三、queue 的介绍和使用  1、queue 的介绍   2、queue 的使用  3、queue 的模

    2024年02月07日
    浏览(41)
  • [C++] STL_priority_queue(优先级队列) 的使用及底层的模拟实现,容器适配器,deque的原理介绍

    priority_queue文档介绍 翻译: 1. 优先队列是一种 容器适配器 ,根据严格的弱排序标准, 它的第一个元素总是它所包含的元素中最大的。 2. 此上下文类似于 堆 , 在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。 3. 优先队列被实现为容器适配

    2024年02月04日
    浏览(35)
  • 【简化程序设计】C++STL“容器适配器“之栈和队列

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:C++初阶 🎉代码仓库:小智的代码仓库 【本节目标】: stack的介绍和使用 stack的模拟实现 queue的介绍和使用 queue的模拟实现 priority_queue的介绍和使用 priority_queue的模拟实现 容器适配器 deuqe的介绍

    2024年02月15日
    浏览(27)
  • 【STL】容器适配器stack和queue常见用法及模拟实现

    1.stack介绍及使用 1.1 stack的介绍 stack文档介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现的,容器适配器是使用特定容器类的封装对象作为其基础容器的类,提供一

    2024年02月06日
    浏览(36)
  • STL容器适配器 -- stack和queue(使用+实现)(C++)

    栈和队列数据结构+画图分析如果对栈和队列的结构不了解的,可以先看该链接的内容 使用stack时需要头文件 #includestack stack是一种容器适配器,用于具有 后进先出 (LIFO)的环境中。只能从容器的一端(栈顶),执行删除、插入和提取操作。 stack是作为容器适配器实现的,容器

    2024年02月14日
    浏览(48)
  • 【容器适配器的认识与模拟】

    打怪升级:第78天 朋友们大家好,今天我们来探究一下stl中的 适配器 ,作为stl六大组件之一,适配器的重要性显而易见。 适配,就是可以和其他工具一起配合着使用,并且只要满足适配条件就都可以使用。 我们生活中又有哪些物品可以称为适配器? 例如:排插、手机充电

    2024年02月08日
    浏览(21)
  • 【C++】STL——反向迭代器的模拟实现:迭代器适配器

    反向迭代器的使用相信大家都已经比较熟悉了,那我们这篇文章具体讲什么呢? 🆗,这篇文章我们重点来讲一下 反向迭代器的模拟实现 。 那为什么我们之前不和正向迭代器放在一块讲呢?为什么要等到我们讲完了容器适配器再来讲反向迭代器的模拟实现呢? 那这个问题我

    2024年02月08日
    浏览(34)
  • C++初阶—完善适配器(反向迭代器)

    目录 0. 前言 1、反向迭代器定义 2、反向迭代器需要实现的相关函数 3、反向迭代器分析 4、针对vector物理空间结构分析 5、针对list物理空间结构分析 6、反向迭代器适配器的实现及测试 7、有关迭代器的功能分类 本篇文章主要根据前面所实现的STL中支持迭代器的容器进行完善

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包