【C++】STL容器——list类的使用指南(含代码演示)(13)
前言
大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!
目录
- 一、list 类——基本介绍
- 二、list 类——使用环境准备
- 三、list 构造&初始化
- [1] list 构造&初始化的代码演示
- [2] list iterator的使用
- 四、list 的访问及遍历操作
- 五、list 增删查改
- 1.list 增删查改操作盘点
- 2.list 增删查改代码演示
- 六、list 空间相关函数
- list 空间相关函数代码演示
一、list 类——基本介绍
- list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
- list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向
其前一个元素和后一个元素。- list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高
效。- 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。
- 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如: 要访问list
的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间
开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这
可能是一个重要的因素)
二、list 类——使用环境准备
- 在使用string类时,必须包含
#include<list> #include<iostream>以及 展开命名空间using namespace std;- 查看所有接口网站:https://cplusplus.com
三、list 构造&初始化
| 构造函数声明 | 功能说明 |
|---|---|
| list (size_type n, const value_type& val = value_type()) | 构造的list中包含n个值为val的元素 |
| list() (缺省) | 构造空的list |
| list (const list& x) | 拷贝构造函数 |
| list (InputIterator first, InputIterator last) | 用 [first, last) 区间中的元素构造list |
[1] list 构造&初始化的代码演示
[2] list iterator的使用
- 此处,大家可暂时将迭代器理解成一个指针,该指针指向list中的某个节点
【注意点】
- begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动
- rbegin(end)与rend(begin)为反向迭代器,对迭代器执行++操作,迭代器向前移动
| 构造函数声明 | 功能说明 |
|---|---|
| begin +end | 返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器 |
| rbegin +rend | 返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位置的reverse_iterator,即begin位置 |
四、list 的访问及遍历操作
已合并到【探究 [ 迭代器 ] 种类&在STL中的使用方式】一文中,传送门如下:
额
五、list 增删查改
1.list 增删查改操作盘点
| 构造函数声明 | 功能说明 |
|---|---|
| push_front | 返回list的第一个节点中值的引用 |
| front | 返回list的最后一个节点中值的引用 |
| back | 在list首元素前插入值为val的元素 |
| push_front | 删除list中第一个元素 |
| pop_front | 在list尾部插入值为val的元素 |
| pop_back | 删除list中最后一个元素 |
| insert | 在list position 位置中插入值为val的元素 |
| erase | 删除list position位置的元素 |
| swap | 交换两个list中的元素 |
| clear | 清空list中的有效元素 |
2.list 增删查改代码演示
list<int> lt; //注意哨兵位的头节点
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);lt.push_front(10);
lt.push_front(20);//打印验证
/*for (auto e : lt)
{cout << e << " ";
}
cout << endl;*/// 要实现:第5个位置插入数据
//v.insert(v.begin()+5, 10);
auto it = lt.begin();
for (size_t i = 0; i < 5; i++)
{++it;
}
lt.insert(it, 100);for (auto e : lt)
{cout << e << " ";
}
cout << endl;
六、list 空间相关函数
| 构造函数声明 | 功能说明 |
|---|---|
| empty | 检测list是否为空,是返回true,否则返回false |
| size | 返回list中有效节点的个数 |
list 空间相关函数代码演示
list<int> lt;
if(empty(lt)!=NULL);
return size(lt);
相关文章:
【C++】STL容器——list类的使用指南(含代码演示)(13)
前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一、list 类——基本介绍二、list 类——…...
Table-GPT:让大语言模型理解表格数据
llm对文本指令非常有用,但是如果我们尝试向模型提供某种文本格式的表格数据和该表格上的问题,LLM更有可能产生不准确的响应。 在这篇文章中,我们将介绍微软发表的一篇研究论文,“Table-GPT: Table- tuning GPT for Diverse Table…...
基于单片机的温湿度和二氧化碳检测系统设计
目录 摘 要... 2 第一章 绪论... 5 1.1 研究课题背景... 5 1.2 国内外发展概况... 7 1.3 课题研究的目的... 8 1.4 课题的研究内容及章节安排... 9 第二章 二氧化碳和温湿度检测系统控制系统的设计方案... 11 2.1 设计任务及要求... 11 2.2 二氧化碳和…...
leetcode做题笔记204. 计数质数
给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2: 输入:n 0 输出:0示例 3&#…...
MySQL Server 5.5 软件和安装配置教程
MySQL 5.5.58(32/64位)下载链接: 百度网盘:百度网盘 请输入提取码 提取密码:7act 软件简介: MySQL 是由瑞典MySQL AB 公司开发一个关系型数据库管理系统,目前属于 Oracle 旗下产品。MySQL 是最…...
【23种设计模式】依赖倒置原则
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
C++ 结构简介
假设要存储有关篮球运动员的信息,则可能需要存储他(她)的姓名、工资、身高、体重、平均得 分、命中率、助攻次数等。希望有一种数据格式可以将所有这些信息仔储在一个单元中。数组不能完成 这项任务,因为虽然数组可以存储多个元素,但所有元素的类型必须相同。也就是说,一个数组…...
element的tabs组件使用问题解决
1.去除el-tabs组件自带的键盘切换功能 今天在使用element的tabs组件时,发现这个tab组件自带了按键盘左右方向,切换tab的功能,可以通过使用keydown.native.capture.stop去除该事件 <el-tabs v-model"editableTabsValue"type&qu…...
python实验1 猜数字游戏
实验0:猜数字游戏 1. 猜数字游戏 版本12. 猜数字游戏 版本23. 猜数字游戏 版本34. 猜数字游戏 版本4 1. 猜数字游戏 版本1 题目猜数字游戏。在程序中预设一个0-9之间的整数, 让用户通过键盘输入所猜的数, 如果大于预设的数,显示“你猜的数字大于正确答案…...
docker 中给命令起别名
docker 的有些命令特别复杂,我们可以给它设置别名简化输入,就不用每次都输入那么多了!!! 1. 进入 .bashrc 中修改配置( .bashrc 是root下的隐藏文件) cd /rootvim .bashrc2. 在 .bashrc 中加入…...
PHP的yaf框架自带插件
Yaf 框架的插件方法触发流程遵循一定的顺序,具体流程如下 Bootstrap 类的 _initPlugin 方法:在 Yaf 应用程序启动时,首先会执行 Bootstrap 类的 _initPlugin 方法。在这个方法中,你可以注册各种插件。例如: phpCopy …...
SpringCloud Alibaba【三】Gateway
Gateway配置与使用 前言新建gateway子项目pom.xml配置文件启动类访问接口方式 测试拓展 前言 在工作中遇到一种情况,一个父项目中有两个子项目。实际使用时,需要外网可以访问,宝信软件只能将一个端口号发布在外网上,所以需要运用…...
Azure - 机器学习实战:快速训练、部署模型
本文将指导你探索 Azure 机器学习服务的主要功能。在这里,你将学习如何创建、注册并发布模型。此教程旨在让你深入了解 Azure 机器学习的基础知识和常用操作。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验…...
C语言十进制转其它进制
短除法介绍 短除法: 主要功能为将十进制数据转为其它进制的数据,假设我们要转换为 X 进制,那么具体的流程如下: 十进制数字不断除以 X,直到商为 0 记录每次计算得到的余数 将余数倒序输出,即为对应的 X 进…...
网络建设 之 React数据管理
React作为一个用于构建用户界面的JavaScript库,很多人认为React仅仅只是一个UI 库,而不是一个前端框架,因为它在数据管理上是缺失的。在做一个小项目的时候,维护的数据量不多,管理/维护数据用useState/useRef就足够了&…...
如何隐藏woocommerce 后台header,woocommerce-layout__header
如何隐藏woocommerce 后台header,woocommerce-layout__header WooCommerce |Products Store Activity| Inbox| Orders| Stock| Reviews| Notices| breadcrumbs 在 functions.php 里添加如下代码即可: // Disable WooCommerce Header in WordPress Admi…...
通俗易懂的理解 解耦 概念
解耦(Decoupling)是计算机科学和软件工程中的一个概念,指的是降低系统中不同部分之间的依赖性,使系统的各个组件能够相对独立地进行开发、维护和演化。解耦的主要目标是减少组件之间的紧密耦合,以提高系统的灵活性、可…...
全志A40i android7.1 增加Vlan功能
一,VLAN基础知识 1.VLAN的定义: VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从…...
NAT技术与代理服务器
目录 一、NAT与NAPT技术 1.NAT技术 2.NAPT技术 (1)四元组的唯一性 (2)数据的传输过程 (3)NAPT的缺陷 二、代理服务器 1.正向代理和反向代理 2.代理服务器的应用 (1)游戏加…...
关于报错java.util.ConcurrentModificationException: null的源码分析和解决
一般有这种问题,方法中至少会有List或者Map下的至少两个子类,有可能参数类型相同,也有可能不同都有可能触发这个问题!其主要原因是使用了ArrayList进行删除操作或者使用iterator遍历集合的同时对集合进行修改都有可能会出现这个问题 ArrayList属于List下的子类 需要区分的是Li…...
并联型有源电力滤波器APF的三相三线制模型及其Simulink仿真研究——基于瞬时无功功率理论...
并联型有源电力滤波器APF三相三线模型都包括,simulink仿真利用基于瞬时无功功率理论的ip-iq谐波检测算法,对三相三线制并联型APF控制系统进行建模与Matlab仿真最近在搞三相三线制并联型APF的仿真,发现基于ip-iq谐波检测的方案确实挺有意思。这…...
丧尸危机模拟:灾备系统的终极压力测试
对于软件测试从业者而言,压力测试早已是日常工作的一部分。我们习惯于用并发用户数、吞吐量、响应时间等冰冷指标,去描绘一个系统在极限负载下的“抗压能力”。然而,当我们将这些概念投射到一个更宏大、更富有冲击力的隐喻——丧尸危机之中时…...
小产能起步第一台设备怎么选?5-100MW半自动产线入门,曜华激光为你指路
对于刚踏入光伏组件制造领域的中小厂商而言,从一条小产能半自动产线起步,是务实而理性的选择。然而,面对从电池片到组件的十几道工序,第一台设备该选什么?本文从入门角度,梳理设备选型的优先级与判断标准。…...
如何用xianyu_spider实现高效电商数据采集?从入门到精通的完整指南
如何用xianyu_spider实现高效电商数据采集?从入门到精通的完整指南 【免费下载链接】xianyu_spider 闲鱼APP数据爬虫 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_spider 在当今电商竞争日益激烈的环境下,获取准确、及时的市场数据成为…...
告别CNN!用Mask2Former+Swin Transformer实战图像分割,保姆级代码解析
从CNN到Transformer:Mask2Former与Swin Transformer在图像分割中的实战指南 图像分割技术正在经历一场静默的革命。传统卷积神经网络(CNN)主导的时代逐渐让位于基于Transformer的新型架构,这种转变不仅仅是技术栈的更新ÿ…...
BES-XGBoost多变量时间序列预测的‘秃鹰搜索优化算法‘与交叉验证抑制过拟合问题的Mat...
基于秃鹰搜索优化算法优化XGBoost(BES-XGBoost)的多变量时间序列预测 BES-XGBoost多变量时间序列 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码,注:暂无Matlab版本要求 -- 推荐 2016B 版本及以上 注:采用 XG…...
AI技术原理--AI上下文窗口:为什么AI没有真正的记忆
99%的人都理解错了一个问题:AI真的会记得你吗? 很多人信誓旦旦跟我说:昨天我跟GPT聊了好久,今天一打开还能接着聊,这不是记忆是什么? 但如果我告诉你,它根本就不记得你——你是不是直接懵了&…...
新手零基础入门:在快马平台上用jupyter notebook学习python数据分析
作为一个刚接触Python数据分析的小白,最近在InsCode(快马)平台上发现了一个超实用的学习方式——用Jupyter Notebook零基础入门。这个交互式工具简直是为新手量身定制的,特别适合像我这样不想折腾环境配置的人。下面分享我的学习笔记,记录如何…...
图像增强技术指南:让模糊图片重获新生的实用方法
图像增强技术指南:让模糊图片重获新生的实用方法 【免费下载链接】Real-ESRGAN-ncnn-vulkan NCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration. 项目地址: https://gitcode.com/gh_mirro…...
深入浅出 Python contextlib:优雅管理上下文资源的利器
凌晨三点,小陈盯着屏幕上的报错信息,头皮发麻。“ResourceWarning: Unclosed file”就这一行警告,让他在一堆历史代码里翻了两个小时。打开的文件忘记关了,数据库连接没释放,临时修改的目录路径也没改回来。代码跑起来…...
