当前位置: 首页 > news >正文

STL之stack(适配器讲解以及双端队列的讲解)

很多人在听到适配器的时候,应该都是懵的,因为对适配器的理解都是懵懵懂懂,其实他很好理解,就是相当于一个转换器。我们可以这样理解,就是现实当中是的插排一样,上面有三个孔的,也有两个孔的,不管三个孔还是两个孔,只要我们插上对应的充电器,就可以给对应的电子产品充电。

双端队列:其实双端队列底层是非常复杂的,他比普通的队列有很大优势(头插头删等),因为这个队列的两端都可以进行插入和删除。所以在进行头插和头删,尾插尾删等时间复杂度是O(1)。它的底层是若干个数组组成的,然后头一个中控器,其中中控器中有遍历整个队列的迭代器,所以,我们可以知道的是,若是在中间插入删除,最好不要用双端队列,如果进行的操作是头插等,那么,此时可以用双端队列。

上面两个关键的工具介绍完了之后,我们来看看Stack,stack是一个容器适配器,怎么理解呢?可以想一下,我们以前在学数据结构的时候,我们的stack有数组栈和链栈,所以,此时在理解,就比较好理解了。那么它的代码实现是什么呢?如下:

#include <iostream>
#include <queue>
using namespace std;
namespace cc
{template<class T, class contain=deque<T>>class Stack{public:void push(const T& x){_con.push_back(x);}T& top() {return _con.back();}void pop(){_con.pop_back();}bool empty()const{return _con.size();}size_t size()const{return _con.size();}private:contain _con;};
}

这里写了几个比较简单的成员函数,我们可以看到的是,stack的默认适配器是deque,也就是双端队列。你也可以传适配器的参数,个人认为stack是STL中模拟实现,比较简单的了。

相关文章:

STL之stack(适配器讲解以及双端队列的讲解)

很多人在听到适配器的时候&#xff0c;应该都是懵的&#xff0c;因为对适配器的理解都是懵懵懂懂&#xff0c;其实他很好理解&#xff0c;就是相当于一个转换器。我们可以这样理解&#xff0c;就是现实当中是的插排一样&#xff0c;上面有三个孔的&#xff0c;也有两个孔的&…...

JVM解密: 解构类加载与GC垃圾回收机制

文章目录 一. JVM内存划分二. 类加载机制1. 类加载过程2. 双亲委派模型 三. GC垃圾回收机制1. 找到需要回收的内存1.1 哪些内存需要回收&#xff1f;1.2 基于引用计数找垃圾(Java不采取该方案)1.3 基于可达性分析找垃圾(Java采取方案) 2. 垃圾回收算法2.1 标记-清除算法2.2 标记…...

【Spring Boot】Spring Boot结合MyBatis简单实现学生信息管理模块

实战&#xff1a;实现学生信息管理模块 环境准备 JDKSpring BootMyBatis 创建Spring Boot项目 使用Spring Initializr创建一个新的Spring Boot项目&#xff0c;并添加以下依赖&#xff1a; Spring WebMyBatis FrameworkMySQL Driver 数据库设计 在MySQL数据库中创建一个名…...

【Java List与Map】List<T> Map与Map List<T>的区别(126)

List&#xff1c;T&#xff1e; Map&#xff1a;List里面的数据类型包含Map&#xff1b; Map List&#xff1c;T&#xff1e;&#xff1a;Map里面value的数据类型包含List&#xff1b; 测试案例&#xff1a; import java.util.ArrayList; import java.util.HashMap; import j…...

【FreeRTOS】常用函数总结

xTaskCreate()&#xff1a; 用法&#xff1a; xTaskCreate(taskFunction, taskName, stackSize, parameters, priority, taskHandle)参数&#xff1a; taskFunction&#xff1a;任务函数&#xff0c;即任务的入口函数。taskName&#xff1a;任务的名称。stackSize&#xff1a;任…...

The Cherno——OpenGL

The Cherno——OpenGL 1. 欢迎来到OpenGL OpenGL是一种跨平台的图形接口&#xff08;API&#xff09;&#xff0c;就是一大堆我们能够调用的函数去做一些与图像相关的事情。特殊的是&#xff0c;OpenGL允许我们访问GPU&#xff08;Graphics Processing Unit 图像处理单元&…...

linux中学习控制进程的要点

1. 进程创建 1.1 fork函数 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核会做以下操作 分配新的内存块和…...

C++Qt QSS要注意的坑

qss源自css&#xff0c;相当于css的一个子集&#xff0c;主要支持的是css2标准&#xff0c;很多网上的css3的标准的写法在qss这里是不生效的&#xff0c;所以不要大惊小怪。 qss也不是完全支持所有的css2&#xff0c;比如text-align官方文档就有说明&#xff0c;只支持 QPushB…...

LeetCode每日一题:56. 合并区间(2023.8.27 C++)

目录 56. 合并区间 题目描述&#xff1a; 实现代码与解析&#xff1a; 排序 贪心 原理思路&#xff1a; 56. 合并区间 题目描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&…...

电视盒子什么牌子好?经销商整理线下热销电视盒子品牌排行榜

在面对众多品牌和型号时&#xff0c;不知道电视盒子哪个牌子好的消费者超多&#xff0c;很多人进店都会问我电视盒子哪款好&#xff1f;我根据店铺内近两年的销量情况整理了电视盒子品牌排行榜&#xff0c;看看实体店哪些电视盒子最值得入手吧。 TOP 1.泰捷WEBOX 40Pro Max电视…...

JavaScript关于函数的小挑战

题目 回到两个体操队&#xff0c;即海豚队和考拉队! 有一个新的体操项目&#xff0c;它的工作方式不同。 每队比赛3次&#xff0c;然后计算3次得分的平均值&#xff08;所以每队有一个平均分&#xff09;。 只有当一个团队的平均分至少是另一个团队的两倍时才会获胜。否则&…...

机器学习深度学习——针对序列级和词元级应用微调BERT

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——NLP实战&#xff08;自然语言推断——注意力机制实现&#xff09; &#x1f4da;订阅专栏&#xff1a;机…...

重启Mysql时报错rm: cannot remove ‘/var/lock/subsys/mysql‘: Permission denied

只有用mysql重启时报错&#xff0c;用root不报错 [mysqlt3-dtpoc-dtpoc-web04 bin]$ service mysql restart Shutting down MySQL.. SUCCESS! rm: cannot remove /var/lock/subsys/mysql: Permission denied Starting MySQL.. SUCCESS! [roott3-dtpoc-dtpoc-web04 ~]# serv…...

[C/C++]指针详讲-让你不在害怕指针

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…...

无涯教程-Android - Frame Layout函数

Frame Layout 旨在遮挡屏幕上的某个区域以显示单个项目&#xff0c;通常&#xff0c;应使用FrameLayout来保存单个子视图&#xff0c;因为在子视图彼此不重叠的情况下&#xff0c;难以以可扩展到不同屏幕尺寸的方式组织子视图。 不过&#xff0c;您可以使用android:layout_grav…...

docker desktop安装es 并连接elasticsearch-head:5

首先要保证docker安装成功&#xff0c;打开cmd&#xff0c;输入docker -v&#xff0c;出现如下界面说明安装成功了 下面开始安装es 第一步&#xff1a;拉取es镜像 docker pull elasticsearch:7.6.2第二步&#xff1a;运行容器 docker run -d --namees7 --restartalways -p 9…...

计网(第四章)(网络层)(六)

目录 一、路由选择协议&#xff08;动态路由自动获取路由信息&#xff09;概述&#xff1a; 二、因特网采用的路由协议 主要特点&#xff1a; 1.自适应 2.分布式 3.分层次 因特网采用分层次的路由选择协议&#xff1a; 三、常见的路由选择协议 一、路由选择协议&#xff…...

科研无人机平台P600进阶版,突破科研难题!

随着无人机技术日益成熟&#xff0c;无人机的应用领域不断扩大&#xff0c;对无人机研发的需求也在不断增加。然而&#xff0c;许多开发人员面临着无法从零开始构建无人机的时间和精力压力&#xff0c;同时也缺乏适合的软件平台来支持他们的开发工作。为了解决这个问题&#xf…...

Apache的简单介绍(LAMP架构+搭建Discuz论坛)

文章目录 1.Apache概述1.1什么是apache1.2 apache的功能及特性1.2.1功能1.2.2特性 1.3 MPM 工作模式1.3.1 prefork模式1.3.2 worker模式1.3.3 event模式 2.LAMP概述2.1 LAMP的组成2.2 LAMP各组件的主要作用2.3 LAMP的工作过程2.4CGI和FastCGI 3.搭建Discuz论坛所需4.编译安装Ap…...

CDL基础原理

一、CDL简介 CDL&#xff08;全称Change Data Loader&#xff09;是一个基于Kafka Connect框架的实时数据集成服务。 CDL服务能够从各种OLTP数据库中捕获数据库的Data Change事件&#xff0c;并推送到kafka&#xff0c;再由sink connector推送到大数据生态系统中。 CDL目前支…...

RK3588开发板接口测试实战:USB、CAN、UART、GPIO全解析

1. 项目概述与核心价值作为一名在嵌入式开发领域摸爬滚打了十多年的老工程师&#xff0c;我深知拿到一块新开发板后&#xff0c;那种既兴奋又有点无从下手的感觉。特别是像RK3588这样功能强大的核心板&#xff0c;接口丰富&#xff0c;性能强劲&#xff0c;但如何快速验证这些基…...

大模型不再“一本正经地胡说八道”!揭秘RAG如何让AI「有据可查」

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合信息检索与文本生成的AI架构&#xff0c;通过让大语言模型在回答问题前先查找外部知识库&#xff0c;有效缓解幻觉问题&#xff0c;并确保答案基于最新、专有数据。RAG通过文档切块、向量嵌入、向量检索和…...

ViMax 为什么会冲上 GitHub Trending:AI 视频生成开始从“出片”转向“制片”

今天刷 GitHub Trending 时&#xff0c;ViMax 这项目很难不注意到。它挂着 674 stars today 的当日热度&#xff0c;标题写得也很直接&#xff1a;Agentic Video Generation&#xff0c;导演、编剧、制片、视频生成一体化。真正让我觉得它值得写&#xff0c;不只是因为它又是一…...

Github创建项目(创建仓库、新建项目、新建仓库)步骤

文章目录 新建项目然后根据指示创建第一个提交并推送即可 新建项目 然后根据指示创建第一个提交并推送即可 echo "# xxxxxxxx" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin ht…...

哈哈哈哈哈打不过我吧,没有办法我(vllm)就是这么强大!

前文智谱GLM太强了&#xff0c;coding plan还需要限时抢购&#xff0c;咱们自己vllm也咧一个呗&#xff01;在微信公众号平台爆了 &#xff0c;接近1w自然阅读&#xff0c;文生文已经满足不了博主的分享欲&#xff0c;今天记录vllm咧一个文生图模型。在文本生成领域&#xff0c…...

今日算法(构造二叉搜索树)

题目描述给你一个整数数组 nums&#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树&#xff08;BST&#xff09;。平衡二叉搜索树&#xff1a;左右两个子树的高度差的绝对值不超过 1每个节点的左右子树都是平衡二叉树二叉搜索树的中序遍历结…...

从一道NOI题目看凯撒密码的实战:手把手教你用C++解密‘加密的病历单’

从凯撒密码到现代数据混淆&#xff1a;C实战解密技术全解析 在计算机科学和密码学的历史长河中&#xff0c;凯撒密码以其简洁优雅的设计理念&#xff0c;成为入门者理解加密原理的最佳起点。这道看似简单的"加密的病历单"编程题目&#xff0c;实际上是一次绝佳的密码…...

选错bpp,你的App内存就炸了?聊聊图像格式、内存与性能的实战权衡

选错bpp&#xff0c;你的App内存就炸了&#xff1f;聊聊图像格式、内存与性能的实战权衡 在移动应用开发中&#xff0c;图像处理往往是性能瓶颈的重灾区。我曾见过一个社交类App因为图片加载策略不当&#xff0c;在低端设备上频繁触发OOM&#xff08;内存溢出&#xff09;崩溃。…...

邻近连接技术伯远邻近连接技术深耕邻近连接技术

我公司是国家级专精特新小巨人企业&#xff0c;拥有国家级重点实验室&#xff0c;科研技术人员500&#xff0c;各类仪器设备投资超1个亿&#xff0c;牵头多项省部级重大专项。 武汉伯远生物医学领域的“邻近标记”&#xff08; 医学PLA 医学PLA &#xff09;是一类在活细胞或组…...

配置openclaw使用taotoken作为其底层大模型供应商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 配置 OpenClaw 使用 Taotoken 作为其底层大模型供应商 基础教程类&#xff0c;引导使用 OpenClaw 这类 Agent 框架的开发者&#x…...