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

【C++】栈和队列

目录

前言

一、stack

1. 栈的定义

2. 成员函数

二、queue

1. 队列的定义

2. 成员函数

三、priority_queue

1. 优先队列的定义

2. 成员函数


前言

栈和队列是STL中很重要的两个容器,栈的特点是先进后出;队列的特点是先进先出。还有优先队列,其特点为容器内数据出队列时为按其大小顺序出。

本文将介绍着以上容器,并贴出模拟实现。


一、stack

1. 栈的定义

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

//template <class T, class Container = deque<T> > class stack;
//T:容器内元素数据类型
//Container:栈的底层数据结构,缺省时默认为双端队列
//例:
stack<int, vector<int>> st1; //底层为vector,栈内数据类型为intstack<string, list<string>> st2; //底层为list,栈内数据类型为string

2. 成员函数

  1.  push(T val):数据入栈;
  2. pop():数据出栈;
  3. top():返回栈顶元素;
  4. size():返回栈内元素个数;
  5. empty():栈空则返回true,否则返回false;

二、queue

1. 队列的定义

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。

//template <class T, class Container = deque<T> > class queue;
//T:容器内元素数据类型
//Container:栈的底层数据结构,缺省时默认为双端队列
//例:
queue<int, vector<int>> qu1; //底层为vector,队列内数据类型为intqueue<string, list<string>> qu2; //底层为list,队列内数据类型为string

2. 成员函数

  1.  push(T val):数据入队列;
  2. pop():数据出队列;
  3. top():返回队列头元素;
  4. size():返回队列内元素个数;
  5. empty():队列空则返回true,否则返回false;

三、priority_queue

1. 优先队列的定义

优先队列:优先队列也是一种队列,只不过不同的是,优先队列的出队顺序是按照优先级来的;在有些情况下,可能需要找到元素集合中的最小或者最大元素,可以利用优先队列ADT来完成操作,优先队列ADT是一种数据结构,它支持插入和删除最小值操作(返回并删除最小元素)或删除最大值操作(返回并删除最大元素);

优先队列的底层一般为堆。

//template <class T, class Container = vector<T>,  class Compare = less<typename Container::value_type> > class priority_queue;
//T:容器内元素数据类型
//Container:栈的底层数据结构,缺省时默认为vector
//Compare:仿函数,STL中提供less与greater,less为大堆,greater为小堆
//例:
priority_queue<int> qu1; //底层为vector,队列内数据类型为int,大堆priority_queue<string, vector<string>, greater> qu2; //底层为vector,队列内数据类型为string,小堆

2. 成员函数

  1.  push(T val):数据入堆;
  2. pop():数据出堆;
  3. top():返回堆顶元素;
  4. size():返回队列内元素个数;
  5. empty():堆空则返回true,否则返回false;

相关文章:

【C++】栈和队列

目录 前言 一、stack 1. 栈的定义 2. 成员函数 二、queue 1. 队列的定义 2. 成员函数 三、priority_queue 1. 优先队列的定义 2. 成员函数 前言 栈和队列是STL中很重要的两个容器&#xff0c;栈的特点是先进后出&#xff1b;队列的特点是先进先出。还有优先队列&…...

常用的预编码算法学习

一、概况 预编码算法的常用实现方式有以下几种: 1. 间隔预编码(Interval Pre-coding):该算法将原始数据分成若干个间隔,然后对每个间隔内的数据进行编码。间隔的长度可以根据具体情况进行选择,常见的间隔长度有固定长度和可变长度两种方式。 2. 迭代预编码(Iterative…...

人才培养计划大纲

构建全面而高效的人才培养规划 文章大纲&#xff1a; 引言 人才培养的重要性当前人才培养面临的挑战文章目的与结构人才培养规划的基本概念 定义与内涵人才培养规划与企业战略的关系人才培养规划的基本原则人才培养规划的现状分析 当前人才培养规划的实践情况存在的问题与不足…...

多语言环境下的正则表达式实战:校验整数、小数

在软件开发中&#xff0c;正则表达式是验证用户输入数据格式的强大工具&#xff0c;特别是在处理表单验证时。本文将通过JavaScript、Java、Python、C、Rust、Go、C六种编程语言展示如何使用正则表达式来校验输入是否为整数或小数&#xff0c;特别强调小数点后最多保留两位的场…...

过拟合和欠拟合的学习

1.什么拟合 就是说这个曲线能不能很好地描述某些样本数据&#xff0c;并且拥有较好的泛化能力。 2.什么是过拟合 过拟合就是曲线太过于贴切训练数据的特征了&#xff0c;在训练集上表现得非常优秀&#xff0c;近乎完美的预测/区分了所有得数据&#xff0c;但是在新的测试集上…...

中间件的使用

中间件是全局使用 工厂函数定义中间件 middleware.py # 工厂函数的中间件 def simple_middleware(get_response):def middleware(request):print("在视图函数处理之前执行、、、、、")response get_response(request)print("在视图函数处理之后执行。。。。…...

阿里云OSS权限开通步骤及最佳实践

在阿里云云计算平台中&#xff0c;对象存储服务&#xff08;OSS&#xff09;是一种高度可扩展的云存储服务&#xff0c;提供了安全、可靠、低成本的数据存储解决方案。在使用OSS时&#xff0c;正确配置权限是至关重要的&#xff0c;以确保数据的安全性和访问控制。本文将介绍阿…...

【Python贪吃蛇】:编码技巧与游戏设计的完美结合

文章目录 &#x1f525;一、运行效果&#x1f4a5;二、游戏教程✈1. 导入模块❤️2. 初始化游戏元素☔3. 改变蛇移动的方向&#x1f44a;4. 绘制方块&#x1f680;5. 检查蛇头是否在游戏区域内&#x1f308;6. 定义蛇的移动函数&#x1f3ac;7. 绑定键盘事件 ⭐三、完整代码 &a…...

2024.5.19 机器学习周报

引言 Abstract 文献阅读 1、题目 X-HRNET: TOWARDS LIGHTWEIGHT HUMAN POSE ESTIMATION WITH SPATIALLY UNIDIMENSIONAL SELF-ATTENTION 2、引言 高分辨率表示是人体姿态估计实现高性能所必需的&#xff0c;随之而来的问题是高计算复杂度。特别地&#xff0c;主要的姿态估…...

母亲节祝福html源码示例

创建一个完整的HTML页面&#xff0c;我可以为您提供一个简单的HTML模板&#xff0c;其中包含一些示例性的祝福语&#xff0c;并添加一些注释以帮助您理解如何扩展内容。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8&qu…...

微信小程序开发中的权限管理与用户身份验证:守护数据安全与用户体验

微信小程序开发中的权限管理与用户身份验证&#xff1a;守护数据安全与用户体验 引言 在微信小程序开发中&#xff0c;权限管理和用户身份验证是确保数据安全、保护用户隐私以及提供个性化服务的关键环节。本文将深入探讨微信小程序中如何实现权限管理和用户身份验证&#xf…...

Python3 笔记:二进制的转换

十进制是逢十进一&#xff0c;二进制就是逢二进一。 十进制里最大的数字是9&#xff0c;二进制里最大的数字是1。 11010010001000010000010000001000000010^0110^11010^210010^3100010^41000010^510000010^6100000010^7100000002^012^122^242^382^4162^5322^6642^7128 1、十进…...

代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链

知识点 1、PHP审计-动态调试-变量覆盖 2、PHP审计-动态调试-原生反序列化 3、PHP审计-动态调试-框架反序列化PHP常见漏洞关键字 SQL注入&#xff1a; select insert update delete mysql_query mysqli等 文件上传&#xff1a; $_FILES&#xff0c;type"file"&…...

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …...

MySQL中的子查询

子查询,在一个查询语句中又出现了查询语句 子查询可以出现在from和where后面 from 表子查询(结果一般为多行多列)把查询结果继续当一张表对待 where 标量子查询(结果集只有一行一列)查询身高最高的学生,查询到一个最高身高 列子查询(结果集只有一行多列) 对上表进行如下操作 …...

Unity打开安卓设备不同的设置面板

1&#xff0c;打开安卓设备不同的设置面板&#xff0c;我还贴心的把Android官网的链接放下面了 2&#xff0c;使用也很方便&#xff1a;unity按钮事件上拖这个脚本&#xff0c;注册MyOpenAndroidSettings方法&#xff0c;参数 填 和枚举值相应的数字 // 功能&#xff1a;打开…...

低空经济+无人机:低空物资运输技术详解

随着科技的飞速发展和航空产业的日益壮大&#xff0c;低空经济已成为全球经济的重要组成部分。无人机作为低空经济的重要载体&#xff0c;其在低空物资运输领域的应用逐渐凸显&#xff0c;为物流、救援等多个领域带来了革命性的变革。 一、低空经济概述 低空经济是指在垂直高度…...

全场景智能终端RK3288主板在智能垃圾回收项目的应用,支持鸿蒙,支持全国产化

全场景智能终端主板AIoT-3588A推出的智能化垃圾回收项目&#xff0c;旨在解决城市化进程中日益突出的垃圾处理问题。智能垃圾分类箱具备触屏操作、自动称重、分类投放以及电子语音播报提示等多项功能&#xff0c;居民能够经过分类积分卡、手机扫码、人脸识别等多种途径进行投放…...

QT设计模式:建造者模式

基本概念 建造者模式是一种创建型设计模式&#xff0c;它允许你创建复杂对象的过程独立于该对象的组成部分以及它们的组装方式。这样可以构造出不同的对象表示。 在建造者模式中&#xff0c;将创建对象的过程和对象的表示分离&#xff0c;通过一步步的构建&#xff0c;可以得…...

个人微信api

简要描述&#xff1a; 退出群聊 请求URL&#xff1a; http://域名地址/quitChatRoom 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/json Authorization&#xff1a;login接口返回 参数&#xff1a; 参数名 必选 类型 …...

[2026降本增效实战] 制造业生产成本核算如何提升准确性?基于实在Agent的端到端解决方案

在2026年的工业4.0深水区&#xff0c;制造业的竞争早已从单纯的产能比拼转向了极致的成本精度博弈。 传统的成本核算模式正面临前所未有的挑战&#xff1a;数据颗粒度过粗、跨系统断点频发、人工干预导致的误差难以溯源。 随着大模型技术与超自动化技术的深度融合&#xff0c;智…...

CL API实时闭环神经控制技术解析与应用

1. CL API实时闭环神经控制技术概述在生物神经网络&#xff08;BNN&#xff09;研究领域&#xff0c;实时闭环控制技术正成为连接计算系统与生物神经元的桥梁。CL API作为这一领域的前沿工具&#xff0c;其设计哲学源于对神经电生理实验的深刻理解——当我们需要在毫秒级时间尺…...

全域数学公理体系下Navier-Stokes方程本源证明(正式论文版)

全域数学公理体系下Navier-Stokes方程本源证明&#xff08;正式论文版&#xff09; 作者&#xff1a;乖乖数学 成文日期&#xff1a;2026年5月25日 体系归属&#xff1a;全域数学大典卷七数学物理应用层 核心立论&#xff1a;光速恒定公理、时空曲率公理、四维通量守恒公理格式…...

终极无边框游戏窗口指南:三步实现无缝多任务体验

终极无边框游戏窗口指南&#xff1a;三步实现无缝多任务体验 【免费下载链接】Borderless-Gaming Play your favorite games in a borderless window; no more time consuming alt-tabs. 项目地址: https://gitcode.com/gh_mirrors/bo/Borderless-Gaming 你是否厌倦了在…...

别再死记硬背了!图解贪心算法:用‘小船过河’和‘区间覆盖’带你掌握核心思想

贪心算法实战&#xff1a;从生活场景到代码实现的思维跃迁 想象一下周末野餐时分配三明治的场景&#xff1a;你有一堆大小不一的三明治和一群饥饿的朋友。为了让最多人吃到食物&#xff0c;你会优先把小块三明治分给食量小的朋友——这种看似简单的决策背后&#xff0c;隐藏着计…...

开源自动化工具用例集:从网页监控到GUI自动化的实践指南

1. 项目概述&#xff1a;一个中文开源“利爪”用例集最近在整理一些自动化脚本和工具链时&#xff0c;我一直在思考一个问题&#xff1a;一个真正好用的、能解决实际问题的自动化工具&#xff0c;它的价值边界到底在哪里&#xff1f;是仅仅完成一个预设的、简单的任务&#xff…...

实战指南:深度解析markmap思维导图转换架构与多格式输出优化

实战指南&#xff1a;深度解析markmap思维导图转换架构与多格式输出优化 【免费下载链接】markmap Build mindmaps with plain text 项目地址: https://gitcode.com/gh_mirrors/ma/markmap markmap是一个强大的开源工具&#xff0c;能够将结构化的Markdown文本转换为交互…...

100+专业思维导图模板:3分钟让你从新手变高手

100专业思维导图模板&#xff1a;3分钟让你从新手变高手 【免费下载链接】Freeplane-MindMap-Template Freeplane-MindMap-Template&#xff08;Freeplane 思维导图模板&#xff09; 项目地址: https://gitcode.com/gh_mirrors/fr/Freeplane-MindMap-Template 你是否曾花…...

3步解决网盘下载限速难题:一站式直链解析工具实战指南

3步解决网盘下载限速难题&#xff1a;一站式直链解析工具实战指南 【免费下载链接】netdisk-fast-download 聚合多种主流网盘的直链解析下载服务, 一键解析下载&#xff0c;已支持夸克网盘/uc网盘/蓝奏云/蓝奏优享/小飞机盘/123云盘等. 支持文件夹分享解析. 体验地址: https://…...

半小时搞定C#开发

前言 此篇发出的原因有两点 致敬C#开篇 - 孤独战士&#xff0c;一篇包含雄心壮志的开篇&#xff0c;便无疾而终&#xff0c;时隔这么多年回关&#xff0c;内心莫名欣慰&#xff0c;感谢曾经的自己&#xff0c;就像文章标题所说&#xff0c;做一个无谓的孤独战士。笔者看到现在…...