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

STL-stack/queue/deque(容器适配器)

 

目录

​编辑

STL-stack

150. 逆波兰表达式求值

stack

queue

std::stack

deque

性能测试

结构


STL-stack

栈的压入、弹出序列_牛客题霸_牛客网输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假。题目来自【牛客题霸】icon-default.png?t=O83Ahttps://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId=13&&tqId=11174&rp=1&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking

bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {// write code herestack<int> st;int pushi=0,popi=0;while(pushi<pushV.size()){st.push(pushV[pushi]);pushi++;while(!st.empty()&&st.top()==popV[popi]){st.pop();popi++;}}return st.empty();}

双层while循环

150. 逆波兰表达式求值

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=O83Ahttps://leetcode.cn/problems/evaluate-reverse-polish-notation/description/

 int evalRPN(vector<string>& tokens) {stack<int> st;for(auto str:tokens){if(str=="+"||str=="-"||str=="*"||str=="/"){int right=st.top();st.pop();int left=st.top();st.pop();switch(str[0]){case '+':st.push(left+right);break;case '-':st.push(left-right);break;case '*':st.push(left*right);break;case '/':st.push(left/right);break;}}else{st.push(stoi(str));}}return st.top();}

stack

template<class T,class Container>
class stack
{
public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}size_t size(){return _con.size();}bool empty(){return _con.empty();}T& top(){return _con.back();}
private:Container _con;
};
stack<int, vector<int>> st;
st.push(1);
st.push(2);
st.push(3);
while (!st.empty())
{cout << st.top() << " ";st.pop();
}

queue

template<class T,class Container>
class queue
{
public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_front();}size_t size(){return _con.size();}bool empty(){return _con.empty();}T& front(){return _con.front();}T& back(){return _con.back();}
private:Container _con;
};

不能用vector,vector不支持头删(效率太低)。只能支持list

总结:

stl中的stack和queue是通过容器适配器转换出来的,不是原生实现的->提高代码的复用性。

class template

<stack>

std::stack

template <class T, class Container = deque<T> > class stack;

class Container = deque<T>双端队列。

deque

支持任意位置插入和随机访问。

性能测试

void test_deque()
{deque<int> d;vector<int> v;const int n = 10000;srand(time(0));for (size_t i = 0; i < n; ++i){int x = rand();d.push_back(x);v.push_back(x);}size_t begin1 = clock();sort(d.begin(), d.end());size_t end1 = clock();size_t begin2 = clock();sort(v.begin(), v.end());size_t end2 = clock();cout << end1 - begin1 << endl;cout << end2 - begin2 << endl;
}

结构

deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维 数组,其底层结构如下图所示:

双端队列底层是一段假象的连续空间,实际是分段连续的,为了维护其“整体连续”以及随机访问的假象,落 在了deque的迭代器身上,因此deque的迭代器设计就比较复杂,如下图所示:

相关文章:

STL-stack/queue/deque(容器适配器)

目录 ​编辑 STL-stack 150. 逆波兰表达式求值 stack queue std::stack deque 性能测试 结构 STL-stack 栈的压入、弹出序列_牛客题霸_牛客网输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假。题目…...

NVDLA专题15:Runtime environment-核心模式驱动

核心模式驱动&#xff08;Kernel Mode Driver&#xff09; KMD主入口点在内存中接收一个推理作业&#xff0c;从多个可用的作业中选择要执行的作业(如果在多进程系统上)&#xff0c;并将其提交给核心引擎调度程序。该核心引擎调度程序负责处理来自NVDLA的中断&#xff0c;调度每…...

计算机毕业设计选题推荐-班级管理系统-教务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

推荐一款开源、高效、灵活的Redis桌面管理工具:Tiny RDM!支持调试与分析功能!

1、引言 在大数据和云计算快速发展的今天&#xff0c;Redis作为一款高性能的内存键值存储系统&#xff0c;在数据缓存、实时计算、消息队列等领域发挥着重要作用。然而&#xff0c;随着Redis集群规模的扩大和复杂度的增加&#xff0c;如何高效地管理和运维Redis数据库成为了许…...

Java项目: 基于SpringBoot+mybatis+maven新闻推荐系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven新闻推荐系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…...

《Python读取 Excel 数据》

关于如何在 Python 中读取excel数据。 方法一&#xff1a; 我们可以使用 pandas 库来读取 Excel 数据。 通过以下命令安装&#xff1a; pip install pandas 以下是读取 Excel 数据的代码&#xff1a; import pandas as pd # 读取 Excel 文件 data pd.read_excel(…...

Druid连接池

一.什么是Druid连接池&#xff1f; Druid 是阿里巴巴开源的一款数据库连接池&#xff08;Database Connection Pool&#xff09;&#xff0c;具有高效、稳定、安全等特点。除了连接池的功能外&#xff0c;Druid 还提供了强大的 SQL 监控、统计、日志记录、防火墙等功能。它主要…...

Python3网络爬虫开发实战(14)资讯类页面智能解析

文章目录 一、详细页智能解析算法1.1 提取标题1.2 提取正文1.3 提取时间 二、列表页智能解析算法三、智能分辨列表页和详细页四、完整的库4.1 参考文献4.2 Project 页面智能解析就是利用算法从页面的 HTML 代码中提取想要的内容&#xff0c;算法会自动计算出目标内容在代码中的…...

社交媒体的未来:Facebook如何通过AI技术引领潮流

在数字化时代的浪潮中&#xff0c;社交媒体平台不断演变&#xff0c;以适应用户需求和技术发展的变化。作为全球领先的社交媒体平台&#xff0c;Facebook在这一进程中扮演了重要角色。尤其是人工智能&#xff08;AI&#xff09;技术的应用&#xff0c;正在深刻地改变Facebook的…...

Java 面试题:从源码理解 ThreadLocal 如何解决内存泄漏 ConcurrentHashMap 如何保证并发安全 --xunznux

文章目录 ThreadLocalThreadLocal 的基本原理ThreadLocal 的实现细节内存泄漏源码使用场景 ConcurrentHashMap 怎么实现线程安全的CAS初始化源码添加元素putVal方法 ThreadLocal ThreadLocal 是 Java 中的一种用于在多线程环境下存储线程局部变量的机制&#xff0c;它可以为每…...

使用人力劳务灵工安全高效的发薪工具

实现企业、劳务、蓝领工人三方的需求撮合、劳务交付、日结考勤、薪费结算一体化闭环,全面为人力企业降低用工成本、提高用工效率。 发薪难 日结/周结/临时工人员难管理&#xff0c;考勤难统计&#xff0c;发薪耗时间 发薪慢 人工核算时间长&#xff0c;微信转账发薪容易限额…...

使用W外链创建微信短链接的方法

创建短链是将长链接转换为更短、更易于分享和记忆的链接的过程。W外链是一个提供短链接生成服务的平台&#xff0c;它支持多种功能&#xff0c;包括但不限于&#xff1a; 短链制作&#xff1a;用户可以将长链接缩短为易于分享的短链接&#xff0c;还支持自定义短链后缀。防红防…...

【人工智能学习笔记】4_4 深度学习基础之生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Network, GAN&#xff09; 一种深度学习模型&#xff0c;通过判别模型&#xff08;Discriminative Model&#xff09;和生成模型&#xff08;Generative Model&#xff09;的相互博弈学习&#xff0c;生成接近真实数据的数据分…...

基于MinerU的PDF解析API

基于MinerU的PDF解析API - MinerU的GPU镜像构建 - 基于FastAPI的PDF解析接口支持一键启动&#xff0c;已经打包到镜像中&#xff0c;自带模型权重&#xff0c;支持GPU推理加速&#xff0c;GPU速度相比CPU每页解析要快几十倍不等 主要功能 删除页眉、页脚、脚注、页码等元素&…...

猫头虎分享:看完百度内部讲话,整理出李彦宏关于大模型的10个判断

&#x1f981; 猫头虎分享&#xff1a;看完百度内部讲话&#xff0c;整理出李彦宏关于大模型的10个判断 &#x1f4e2; 大家好&#xff01;我是猫头虎技术团队的首席写作官。今天为大家带来一篇重量级内容&#xff1a;从百度内部讲话中&#xff0c;整理了李彦宏对大模型的10大…...

vue3透传、注入

属性透传 传递给子组件时&#xff0c;没有被子组件消费的属性或事件&#xff0c;常见的如id、class 注意1 1.class、style是合并的&#xff0c;style中如果出现重复的样式&#xff0c;以透传属性为准2.id属性是以透传属性为准&#xff0c;其他情况透传属性名相同&#xff0c…...

数模原理精解【9】

文章目录 混合高斯分布概述定义性质参数估计计算Julia实现 详述定义原理 核心参数1. 均值&#xff08;Means&#xff09;2. 协方差矩阵&#xff08;Covariance Matrices&#xff09;3. 权重&#xff08;Weights&#xff09;4. 聚类个数&#xff08;高斯模型个数&#xff0c;K&a…...

Java中的linkedList类及与ArrayList的异同

继承实现关系 public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable 由于涉及的类过多&#xff0c;画起来过于繁琐&#xff0c;这里只展示最外层的继承实现关系 可以看到它是…...

【精选】文件摆渡系统:跨网文件传输的安全与效率之选

文件摆渡系统可以解决哪些问题&#xff1f; 文件摆渡系统&#xff08;File Shuttle System&#xff09;主要是应用于不同网络、网段、区域之间的文件数据传输流转场景&#xff0c; 用于解决以下几类问题&#xff1a; 文件传输问题&#xff1a; 大文件传输&#xff1a;系统可…...

tkinter 电子时钟 实现时间日期 可实现透明 无标题栏

下面是一个使用tkinter库实现的简单电子时钟的例子&#xff0c;可以显示当前的日期和时间&#xff0c;并且可以设置窗口为透明且无标题栏。 import tkinter as tk import timedef update_time():current_time time.strftime("%Y-%m-%d %H:%M:%S")label.config(text…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...