C++ 适配器 stack

news2024/9/22 23:25:56

不了解适配器的读者可以先去看一看这一篇博客:C++ 适配器-CSDN博客

栈数据结构介绍

我们平时洗碗的时候,叠成一层层的碗最后只能从上面往下面开始拿;平时箱子里面叠的衣服,也是只能从上面慢慢拿。先放进去的东西后拿出来,这种内存特点的数据结构就叫栈。

就像一个只有单边口的容器,数据只能从上面进,也只能从上面出。

针对于这种内存特点,我们可以用数组(或顺序表)来实现,从数组末尾进行插入和删除;同时我们也可以用链表,把链表的头作为栈的出口进行进出(链表的头插和头删)操作。甚至双向链表情况下两头都可以;同时我们也可以用双端队列,双端队列的头插头删和尾插尾删操作都很便利。

因为stack可以用很多其他的数据结构来实现,所以stack就被定义为了迭代器而不是容器,因为本质还是其他容器的套用。

stack的相关函数

stack的函数很少,因为它的结构限制很多,只允许一方进一方出,导致什么迭代器等都没有。

构造函数

第一个就是只传容器类型,第二个。和第一个差不多,就是缺省参数的右值引用。后面的就是加了一个内存池。

具体看这个例子就行了,我们用的最多的就是默认构造。

empty

判断是否为空,是为真反之为假

size

返回栈的大小

top

返回栈顶的元素

push

入栈一个元素

emplace

和push功能一样,但是在某些场景下比push的效率高,目前作者还不知其原理。

pop

出栈一个元素

swap

保证容器一样的情况下交换两个栈的内部数据。

适配器stack的实现

stack函数少,底层又是用的已经实现好的容器,所以很方便实现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32嵌入式系统设计与开发拓展】——15_ADC

一、问题集结 1、ADC? (Analog to Digital Converter)即模数转换器,用来将模拟信号转换为数字信号. 模数转换器 2、什么是模拟量? 如温度,湿度等随着时间逐步逐步连续变化的量 3、什么是数字量? 如我们单片机处理的信…

Spring自动注册-自定义标签解析

创建实体 定义一个XSD文件描述组件内容 创建BeanDefinitionParser接口的实现类,用来解析XSD文件中的定义和组件定义。 创建NamespaceHandlerSupport实现类,目的是将组件注册到Spring容器中。 编写spring.handlers和spring.schemas文件,默认位…

Layui——实现弹出层中的form表单验证(lay-verify不生效)

目录 分析原因 完整版修改后的代码 完整版原代码 参考文章: 1、http://t.csdnimg.cn/64KdG2、http://t.csdnimg.cn/CUTPa3、http://t.csdnimg.cn/iHAIO 分析原因 添加部门时,部门名称不能为空,添加不成功,也没有任何提示&#…

使用ITextRenderer导出PDF后无法打开问题,提示‘无法打开此文件‘

依赖如下 <!-- https://mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf --> <dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-saucer-pdf</artifactId><version>9.1.22</version> &l…

96、QT 实现LED圆形指示灯控件

代码实现更改控件样式表的颜色和形状等 //QLabel控件变成圆形LED指示灯样式表 const QString QLabel_LED_Circle_SheetStyle_Red "min-width: 20px; min-height: 20px;max-width:20px; max-height: 20px;border-radius: 10px; background:red";//红色 const QStrin…

[C++][opencv]基于opencv实现photoshop算法色相和饱和度调整

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 HSL.hpp #ifndef OPENCV2_PS_HSL_HPP_ #define OPENCV2_PS_HSL_HPP_#include "opencv2/core.hpp" using namespace cv;namespace cv {enum HSL_COLOR {HSL_ALL,HSL_RED,HSL_YELLOW,HSL_GREEN,HS…

告别繁琐!2024年PDF转CAD工具大推荐

如果你是装修设计师收到的却是被阉割了的PDF&#xff0c;不要破防。现在有不少工具可以直接实现PDF转CAD再也不需要你费心重画哦。今天&#xff0c;我们就来聊聊2024年大家都在用的几款PDF转CAD工具&#xff0c;看看它们是如何改变我们的设计工作的。 1.福昕PDF转换大师 链接…

springboot整合mybatis以及mybatis-plus 开发

一、springboot整合mybatis 1.注解版 1.1 导入坐标 <dependencies><!--mybatis坐标--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</…

39、Python之面向对象:对象属性解析:MRO不够用,补充3个方法

引言 在前面的文章中&#xff0c;我们谈及Python在继承关系&#xff0c;尤其是多继承中&#xff0c;一个对象的属性的查找解析顺序。由于当时的语境聚焦于继承关系&#xff0c;所以只是简要提及了属性解析顺序同方法的解析顺序&#xff0c;而方法的解析顺序&#xff0c;在Pyth…

16.1 深度学习基础

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

Java 数据结构入门示例

通过我们适合初学者的数据结构指南&#xff08;包含说明性示例&#xff09;深入了解 Java 世界。 理解结构对于软件开发至关重要。Java是学习数据结构的理想选择&#xff0c;因为它的语法简单&#xff0c;应用范围广泛&#xff0c;从移动应用开发到大数据分析。 让我们仔细看看…

Lingo保姆级安装教程及新手快速入门指南

一、软件介绍 Lingo 18.0是一款功能强大的数学建模软件&#xff0c;功能齐全&#xff0c;建模速度快&#xff0c;是求解优化模型的最佳选择&#xff0c;深受广大用户的喜爱。它有一套完整继承的软件包&#xff0c;可以用于构建和编辑问题的完全功能环境&#xff0c;具有建模速…

【前端VUE】npm i 出现版本错误等报错 简单直接解决命令

前端vue npm i 安装时出现 报错原因 在新版本的npm中&#xff0c;默认情况下&#xff0c;npm install遇到冲突的peerDependencies时将失败。 解决办法 使用--force或--legacy-peer-deps可解决这种情况。 --force 会无视冲突&#xff0c;并强制获取远端npm库资源&#xff0…

【C++ 面试 - 基础题】每日 3 题(十五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

React H5设置企业级v6版本路由的配置

路由配置是项目开发的必要一环&#xff0c;尤其是目前流行SPA&#xff0c;下面看看如何使用v6版本路由进行合理的H5路由配置 一、基本页面结构&#xff08;目录根据开发要求建&#xff0c;下面仅用于展示配置路由&#xff09; 二、具体文件实现 1. index.tsx import React f…

Java | Leetcode Java题解之第335题路径交叉

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSelfCrossing(int[] distance) {int n distance.length;// 处理第 1 种情况int i 0;while (i < n && (i < 2 || distance[i] > distance[i - 2])) {i;}if (i n) {return false;}// 处…

Adobe Substance 3D Painter v10.0.1 解锁版下载安装教程 (3D绘画软件)

前言 Adobe Substance 3D Painter 简称 Pt&#xff0c;是一款由adobe公司新研发的3D绘画软件。 Substance 3D Painter具有前所未有的功能和工作流程改进&#xff0c;使为 3D 资产创建纹理变得比以往更容易。 一、下载地址 下载链接&#xff1a;分享文件&#xff1a;Adobe Su…

Leetcode JAVA刷刷站(20)有效的括号

一、题目概述 二、思路方向 在Java中&#xff0c;要判断一个仅包含括号&#xff08;(, ), {, }, [, ]&#xff09;的字符串是否有效&#xff0c;你可以使用栈&#xff08;Stack&#xff09;数据结构来实现。栈是一种后进先出&#xff08;LIFO, Last In First Out&#xff09;的…

排序算法之梳排序

title: 梳排序 date: 2024-7-30 14:46:27 0800 categories: 排序算法 tags:排序算法梳排序 description: 梳排序&#xff08;Comb Sort&#xff09;是一种由弗拉基米尔多博舍维奇&#xff08;Wlodzimierz Dobosiewicz&#xff09;于1980年所发明的不稳定排序算法&#xff0c;并…

无字母绕过webshell

目录 代码 payload构造 php7 php5 构造payload 代码 不可以使用大小写字母、数字和$然后实现eval的注入执行 <?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$code))…