stack和queue(一)

接下来讲解一些stack栈和queue的简单使用

stack的概念

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。  特性是先进先出  后进后出

构造一个栈堆   

int main()
{deque<int> mydeque(3, 100);          // deque with 3 elementsvector<int> myvector(2, 200);        // vector with 2 elementsstack<int> first;                    // 构造空栈stack<int> second(mydeque);         // 拷贝deque内容stack<int, vector<int> > third;  // 使用vector容器的空栈stack<int, vector<int> > fourth(myvector);//使用拷贝vector容器的栈cout << "size of first: " << first.size() << '\n';cout << "size of second: " << second.size() << '\n';cout << "size of third: " << third.size() << '\n';cout << "size of fourth: " << fourth.size() << '\n';r

empty是stack的成员函数 用于检测当前stack是否为空  返回布尔值 若为空返回真  不为空返回假

这里的empty常常用与出栈遍历时作为while循环结束的条件来使用

返回stack中元素的个数

	cout << "size of first: " << first.size() << '\n';cout << "size of second: " << second.size() << '\n';cout << "size of third: " << third.size() << '\n';cout << "size of fourth: " << fourth.size() << '\n';

返回栈顶元素的引用

将stack中尾部的元素弹出

top和pop常常在遍历栈时配合完成出栈和打印操作

将元素val压入stack中

接下来建立一个栈并且完成栈的遍历

int main()
{stack<int> s;s.push(1);s.push(10);s.push(12);s.push(14);s.push(15);s.push(16);s.push(18);s.push(19);while (!s.empty()){int a = s.top();cout << a << " ";s.pop();}cout << endl;return  0;
}

接下来讲解一下queue队列的简单使用

队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端 提取元素。  队列的特性是先进先出

构造容器适配器对象

测试用例

int main()
{deque<int> mydeck(3, 100);        list<int> mylist(2, 200);        queue<int> first;                 //创建一个空队列queue<int> second(mydeck);       //拷贝mydeck容器内容queue<int,list<int> > third; //创建一个使用list容器的空队列queue<int, list<int> > fourth(mylist);//创建一个使用list容器的队列并且将mylist的内容拷贝使用cout << "size of first: " << first.size() << endl;cout << "size of second: " << second.size() << endl;cout << "size of third: " << third.size() << endl;cout << "size of fourth: " << fourth.size() << endl;return 0;
}

检测队列是否为空,是返回true,否则返回false

返回队列中有效元素的个数

返回队头元素的引用

返回队尾元素的引用

在队尾将元素val入队列

将队头元素出队列

接下来创建一个简单的队列并对其进行遍历

int main()
{queue<int> q;q.push(1);q.push(21);q.push(31);q.push(41);q.push(51);q.push(61);q.push(71);while (!q.empty()){int a = q.front();cout << a << " ";q.pop();}cout << endl;return 0;
}

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

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

相关文章

vue项目加载cdn失败解决方法

注释index.html文件中 找到vue.config.js文件注释、

Spring IDEA 2024 自动生成get和set以及toString方法

1.简介 在IDEA中使用自带功能可以自动生成get和set以及toString方法 2.步骤 在目标类中右键&#xff0c;选择生成 选择Getter和Setter就可以生成每个属性对应的set和get方法&#xff0c; 选择toString就可以生成类的toString方法&#xff0c;

快速响应:提升前端页面加载速度技巧的必知策略方案

在本文中&#xff0c;我们将深入探讨导致页面加载缓慢的常见原因&#xff0c;并分享一系列切实可行的优化策略&#xff0c;无论你是刚入门的新手&#xff0c;还是经验丰富的开发者&#xff0c;这些技巧都将帮助你提升网页性能&#xff0c;让你的用户体验畅快无阻。 相信作为前端…

网页与微信小程序:一场轻量化应用的博弈

网页与微信小程序&#xff1a;一场轻量化应用的博弈 在如今的信息时代&#xff0c;移动互联网已然成为主流&#xff0c;而在这一趋势的驱动下&#xff0c;应用形态也在不断演变。微信小程序与传统网页&#xff0c;作为两种不同的应用形态&#xff0c;正如两条并行却又交织的道…

PY+MySQL(等先完成mysql的学习)

第一章&#xff1a;准备工作&#xff08;重点关于mysql&#xff09; win安装 下载&#xff1a; 网址&#xff1a;MySQL :: Download MySQL Community Server版本&#xff1a;我的是8.0&#xff0c;但是建议5.7 下载&#xff1a;安装&#xff0c;因为是zip文件所以直接解压就好了…

2024/9/21 leetcode 21.合并两个有序链表 2.两数相加

目录 21.合并两个有序链表 题目描述 题目链接 解题思路与代码 2.两数相加 题目描述 题目链接 解题思路与代码 --------------------------------------------------------------------------- 21.合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返…

模版结构体没有可用成员(C3203)

没有typedef模版结构体而导致。 并且_tables[index]无法访问HashData内部的成员。

任务管理与守护进程【Linux】

文章目录 进程组前台进程&后台进程守护进程daemon 进程组 组长是多个进程的第一个&#xff0c;组长进程的标识是&#xff0c;其进程组ID等于其进程ID 前台进程&后台进程 前台进程&#xff1a;能获取键盘输入&#xff0c;即拥有键盘文件 后台进程&#xff1a;不能获取…

无人机之激光避障篇

无人机的激光避障技术是通过激光传感器来感知和避开周围障碍物的一种高级技术。以下是关于无人机激光避障技术的详细解析&#xff1a; 一、技术原理 激光避障技术利用激光束的直线传播和反射特性&#xff0c;通过发送激光束并接收反射回来的信号&#xff0c;来检测和计算周围障…

Unity数据持久化4——2进制

概述 基础知识 各类型数据转字节数据 文件操作相关 文件相关 文件流相关 文件夹相关 练习题 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using UnityEngine;public class Exercises1 : MonoBehaviour {/…

Java项目实战II基于Java+Spring Boot+MySQL的车辆管理系统(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…

【d45】【Java】【力扣】203.移除链表元素

思路 由于删除操作&#xff0c;需要&#xff1a;pre.nextcur.next 但是单链表无法获得 前面节点&#xff0c; 所以&#xff1a;定义指针 cur 指向当前节点&#xff0c;判断cur.next 的val值&#xff0c;是否等于传入的val值 cur &#xff1a;从head 到倒数第二个 最后单独…

【大屏方案】可视化综合展示系统解决方案(Word原件2024)

2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.2.数据查询过程设计 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&…

理解JAVA中的Native内存追踪(NMT)机制

JVM 具有多个内部内存区域。本机内存(native)跟踪 (NMT) 通过提供每个内存区域的详细信息&#xff0c;帮助 Java 开发人员识别这些内部内存区域上的内存泄漏、内存过度使用和其他相关问题。在本文中&#xff0c;让我们学习如何使用 NMT 来解决与 JVM 内存相关的问题。 什么是本…

旺店通ERP集成用友U8(旺店通主供应链)

源系统成集云目标系统 用友U8介绍 用友U8是一套企业级的解决方案&#xff0c;可满足不同的制造、商务模式下&#xff0c;不同运营模式下的企业经营管理。它全面集成了财务、生产制造及供应链的成熟应用&#xff0c;并延伸客户管理至客户关系管理&#xff08;CRM&#x…

prometheus监控linux虚拟机

前提条件已安装好prometheus和grafana&#xff0c;如果未安装请移步到docker部署prometheus 安装部署Prometheus,docker安装grafana安装部署Grafana。 1.二进制部署node-exporter采集器 2.1 采集器node-exporter下载 链接&#xff1a;https://pan.baidu.com/s/1hDmckSSl5X36…

Java语言程序设计基础篇_编程练习题***18.32 (游戏:骑士的旅途)

目录 题目&#xff1a;***18.32 (游戏:骑士的旅途) 习题思路 代码示例 输出结果 题目&#xff1a;***18.32 (游戏:骑士的旅途) 骑士的旅途是一个古老的谜题&#xff0c;它的目的是使骑从棋盘上的任意一个正方 形开始移动&#xff0c;经过其他的每个正方形一次&#xff0c;如…

Vue3:v-model实现组件通信

目录 一.性质 1.双向绑定 2.语法糖 3.响应式系统 4.灵活性 5.可配置性 6.多属性绑定 7.修饰符支持 8.defineModel使用 二.使用 1.父组件 2.子组件 三.代码 1.父组件代码 2.子组件代码 四.效果 一.性质 在Vue3中&#xff0c;v-model指令的性质和作用主要体现在…

【漏洞复现】Casbin casdoor static 任意文件读取漏洞

漏洞描述 Casdoor 是 Casbin 开源社区推出的基于 OAuth 2.0 / OIDC 的中心化的单点登录(SSO)身份验证平台。 Casdoor static 存在任意文件读取漏洞,攻击者通过发送特殊的请求包可以获取服务器中的敏感文件。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵…

【第十一章:Sentosa_DSML社区版-机器学习分类】

目录 11.1 逻辑回归分类 11.2 决策树分类 11.3 梯度提升决策树分类 11.4 XGBoost分类 11.5 随机森林分类 11.6 朴素贝叶斯分类 11.7 支持向量机分类 11.8 多层感知机分类 11.9 LightGBM分类 11.10 因子分解机分类 11.11 AdaBoost分类 11.12 KNN分类 【第十一章&…