C++基础(13)——STL(stack、queue、list)

news2024/10/7 14:34:08

前言

本文主要介绍C++中STL中的stack、queue和list容器

7.5:stack容器

7.5.1:stack容器基本概念

栈中只有顶端元素才可以被外界调用,因此栈不允许有遍历的行为,其中string、vector、deque都可以遍历

7.5.2:栈的常用接口(push、pop、top、empty、size、operator=)

7.6:queue容器

7.6.1:queue的基本概念

队列中队头出数据,队尾进数据,且和栈一样不允许有遍历操作

7.6.2:queue的常用接口(push、pop、front、back、size、empty)

queue容器装入自定义数据类型数据

7.7:list容器(双向循环链表)

7.7.1:list基本概念

链表由一系列的结点组成,结点是由数据域和指针域所组成。

链表优缺点

优点:可以对任意位置数据进行插入或删除

缺点:访问速度较慢、占用更大的空间

STL中的list是一个双向循环链表,list的迭代器是双向迭代器,不能跳跃式访问

相对于vector,经过插入或删除操作list原有的迭代器都不会失效,而vector的迭代器可能会失效。因为当vector容器插入数据量过大,那么系统会重新给vector分配空间,这时原有数据保存的位置都会发生改变,原有迭代器就会失效。删除也同理。

7.7.2:list的构造函数(无参构造、拷贝、区间、指定多个相同数据)

7.7.3:list的赋值和交换(operator=、assign、swap)

7.7.4:list大小操作(size、empty、resize)

在使用resize的时候出现了一点问题,使用resize进行缩小的时候会报错,正常将list放大不会报错

 

这时我想用resize进行缩小一下,让链表的长度变为2,这时会报错

 

我看了看resize的原型,一个参数的版本是灰色的,被注释掉了

 

在类中给构造函数指定默认参数就可以解决,编译可以通过,可以正常打印

不指定默认参数可也可以,制定一个对象就好了,本质还是调用了两个参数的resize方法

7.7.5:list插入和删除(push_back、push_front、pop_back、pop_front、insert、clear、erase、remove)

在使用remove的时候又遇到了一些问题,说是无法比较两个对象,其实就是要对==进行运算符重载

 在Person类中对==进行运算符重载

使用remove删除符合的全部对象

7.7.6:list容器数据存取(front、back)

判断一个容器的叠加器是否支持随机访问,可以验证叠加其是否重载了operator+或者operator-。如果重载了,那么就支持随机访问,不支持随机访问迭代器的容器不能使用标准算法。

 

 

7.7.7:list容器元素翻转和排序(reverse、sort)

要对Person类的<运算符进行重载才可以正常编译,默认使用的sort是升序

想要让list是降序排列,要写一个回调函数

总结

以上就是本文的全部内容,非常感谢你能看到这

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

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

相关文章

AT32F437网络通信

网络时间长了ping不通&#xff0c;解决方法 https :// https://hjha.bar:8443/vod 123456789 /play/id/32052/sid/1/nid/1.html

PYTHON强制升级openpyxl方法--已验证有效

当执行for i, row in enumerate(worksheet.iter_rows(min_row1, max_rowworksheet.max_row,values_onlyTrue)) 出现以下错误时&#xff1a;TypeError: iter_rows() got an unexpected keyword argument ‘values_only’ 说明openpyxl版本过低&#xff0c;需要升级&#xff0c;当…

指令模板:采访大纲生成 | AIGC实践

最近收获了一些朋友的谬赞&#xff0c;说我“执行力太强了”&#xff0c;可以持续输出内容。 呃&#xff0c;其实吧&#xff0c;这些素材都是从我的实际工作和生活中来的&#xff0c;只是稍加整理而已。 要说起来&#xff0c;AIGC的出现已经完全改变了我的工作方式。在遇到问题…

《中国多媒体与网络教学学报》简介及投稿邮箱

《中国多媒体与网络教学学报》简介及投稿邮箱 中国多媒体与网络教学学报 创刊于2002年&#xff0c;是经国家新闻出版总署批准的中央级电子期刊,是国内最早以多媒体形式发表中小学信息化教学改革前沿成果的学术期刊群,是教育部重点成果的发表平台之一,由教育部主管、清华大学主…

谈找工作线上途径

谈找工作 目录概述需求&#xff1a; 设计思路实现思路分析1.51job2.拉勾网 猎聘网站智联招聘网站后记 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait…

DDOS攻击防御实战(威胁情报)

背景&#xff1a; 不知道大家最近有没有关注到&#xff0c;百度云CDN不支持免费了&#xff0c;网站安全问题越来越严重了…… 常见攻击 DDOS Distributed Denial of Service 分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击&#xff0c;使攻击的目标无法正常使用&…

C++基础(14)——STL(set、pair、map)

前言 本文主要介绍C中STL中的set、pair和map容器 7.8&#xff1a;set、multiset容器 7.8.1&#xff1a;set容器基本概念、构造函数和赋值&#xff08;、insert&#xff09; set容器中所有元素都会在插入的时候自动排序 set和multiset的区别 set不允许有重复的元素&#xff…

i5/i7该选谁?差距大不大?i5-13490F、i7-13790F深度测试

一、i5、i7还是性能差不多吗&#xff1f; 自从2017年Zen架构发布开始&#xff0c;Intel与AMD在CPU性能竞争上就进入了激烈的内卷。随着双方在产品竞争上日趋白热化&#xff0c;同世代不同档次CPU产品的性能差距被明显拉大。 那么&#xff0c;过去那种“i5、i7性能差不多&#x…

self-attention(transformer)

自注意力机制 在传统的CNN中&#xff0c;都是对感受野内部的事情进行关联后理解。 感受野实际上关乎了模型对全局信息的理解。 而本质上&#xff0c;感受野是一种特殊的注意力机制&#xff0c;也就是说感受野是一种受限的、具有特定参数的注意力。 之前的内容如DANet&#…

基于webpack开发vue-cli

一、vue-cli开发 1. 项目整体目录 2. package.json {"name": "vue-cli","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "npm …

机器学习常识 23: U-Net

摘要: U-Net 集编码-解码于一体, 是一种常见的网络架构. 图 1. U-Net 例. 如图 1 所示, U-Net 就是 U 形状的网络, 前半部分 (左边) 进行编码, 后半部分 (右边) 进行解码. 编码部分, 将一个图像经过特征提取, 变成一个向量. 前面说过: 深度学习本质上只做件事情, 就是特征提取…

【ESXi 7.x/8.x】ESXi 配置备份与还原

目录 1. 使用 ESXi命令行备份数据&#xff08;1&#xff09;将已更改的配置与持久存储同步&#xff08;2&#xff09;备份 ESXi 主机的配置数据&#xff08;3&#xff09;下载配置文件通过浏览器下载配置文件通过wget命令下载 &#xff08;4&#xff09;注意事项 2. 还原 ESXi …

基于Java班主任助理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

一直报错npm ERR! cb() never called!删除缓存仍然不行

看到npm下载包出错, 通常我们会手动删除node-modules这个文件夹来解决. 但是往往现实很骨感, 然后我们会找网上各种方法来解决, 比如这篇文章 但是当所有方法都尝试了一遍, 仍然还是出错, 这到底是什么原因呢? 可以使用npm config ls 查看一下我们电脑上是否会有一份.npmrc…

前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用

前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13128 效果图如下&#xff1a; #### 自定义顶部搜索框 用于搜索跳转使用方法 使用方法 <!-- 自定义顶…

【MySQL新手入门系列四】:手把手教你MySQL数据查询由入门到学徒

SQL语言是与数据库交互的机制&#xff0c;是关系型数据库的标准语言。SQL语言可以用于创建、修改和查询关系数据库。SQL的SELECT语句是最重要的命令之一&#xff0c;用于从指定表中查询数据。在此博客中&#xff0c;我们将进一步了解SELECT语句以及WHERE子句以及它们的重要性。…

PCB设计实验|第一周|2月27日

目录 一、实验原理 二、实验环境 三、实验结果 四、实验总结 一、实验原理 Altium Designer 提供了唯一一款统一的应用方案&#xff0c;其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的…

Axure基础:中继器与热区

一、中继器 1、中继器的主要作用 中继器就是临时的数据库&#xff0c;在我们需要当前原型图存储和变更一些数据的时候会经常用到。 能用到中继器的一般都是高保真原型&#xff0c;如果不需要大量的数据动态展示&#xff0c;那么几乎用不到或者搞动态面板也可以实现。 下面我…

selenium之元素定位

一、selenium安装 pip3 install selenium 二、安装浏览器驱动 1&#xff1a;下载最新的浏览器驱动 chrome浏览器驱动下载地址&#xff1a; https://registry.npmmirror.com/binary.html?pathchromedriver/ 查看自己电脑上安装的chrome浏览器版本号&#xff0c;驱动和浏览…

【工程实践】python实现多进程

1 多线程与多进程 Python中比较常见的并发方式主要有两种&#xff1a;多线程和多进程。 1-1 多线程 多线程即在一个进程中启动多个线程执行任务。一般来说使用多线程可以达到并行的目的&#xff0c;但由于Python中使用了全局解释锁GIL的概念&#xff0c;导致Python中的多线程并…