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

c++的list类

本篇将讲述list类中的各种重要和常用函数(begin()、end()、rbegin()、rend()、empty()、size()、front()、back()、push_front()、pop_front()、push_back()、pop_back()、insert()、erase()、resize()、clear()、splice()、remove()、unique()、sort()、reverse())

所有函数使用时应当包含list>。

如果对您有帮助还请多多点赞,要是文章有错误地方还请你在评论区留言指正。       

一、list的创建

1.空容器构造函数(默认构造函数)

作用:构造一个没有元素的空容器。

用法:

2.填充构造函数

作用:构造一个包含 n 个元素的容器。每个元素都是 val 的副本。

用法:

	list<int> l(5,0);

 3.范围构造函数

作用:构造一个容器,其中包含与范围 [first,last] 一样多的元素,每个元素都按相同的顺序从该区域中的相应元素构造。

用法:创建一个list对象l2,初始值与l1中的元素相等。

	list<int>l2(l1.begin(), l1.end());

 4.复制构造函数

作用:以相同的顺序构造一个容器,其中包含 x 中每个元素的副本。

示例:创建一个list对象l2,其中包含l1中的每个元素。

	list<int> l1(5,1);list<int>l2(l1);

 二、list迭代器

list的迭代器是一种双向迭代器,即可以在头部和尾部进行访问

1.begin()和end()

begin()的作用:返回一个迭代器,该迭代器指向列表容器中的第一个元素。请注意,与返回对第一个元素的引用的成员 list::front 不同,此函数返回指向它的双向迭代器。如果容器为空,则不应取消引用返回的迭代器值。

end()的作用:序列末尾之后的元素的迭代器。如果 list 对象是 const 限定的,则该函数返回 const_iterator。否则,它将返回一个迭代器。成员类型 iterator 和 const_iterator 是双向迭代器类型(分别指向 element 和 const 元素)。

用法:将一个list的对象从头到尾遍历一遍。

list<int >l(6, 6);
list<int>::iterator it = l.begin();
for (; it != l.end(); it++)
{cout << *it << ' ';
}

2.rbegin()和rend() 

rbegin()的作用:返回一个反向迭代器,该迭代器指向容器中的最后一个元素(即其反向开头)。反向迭代器向后迭代:增加它们会将它们移向容器的开头。

rend()的作用:返回一个反向迭代器,该迭代器指向列表容器中第一个元素之前的理论元素(被视为其反向端)。list::rbegin 和 list::rend 之间的范围包含容器的所有元素(按相反的顺序)。
用法:将list对象的元素从后往前遍历。

	list<int >l;for (int i = 0; i < 6; i++){l.push_back(i);}list<int>::reverse_iterator it = l.rbegin();for (; it != l.rend(); it++){cout << *it << ' ';}

 三、容量

1.empty()

作用:返回列表容器是否为空(即其大小是否为 0)。此函数不会以任何方式修改容器,非空返回0。

 用法:判断l是否为空,是空返回非零的数值。

2.size()

作用:返回列表容器中的元素数。

用法:用size计算l中元素的个数。

	list<int >l(4,0);cout<<l.size();

四、元素访问

1.front()

作用:返回对列表容器中第一个元素的引用。与返回同一元素的迭代器的成员 list::begin 不同,此函数返回直接引用。

 

	list<int>l;for (int i = 0; i < 6; i++){l.push_back(i);}cout << l.front();

 2.back()

作用: 返回对列表容器中最后一个元素的引用。与返回此元素之后的迭代器的成员 list::end 不同,此函数返回直接引用。

用法:输出l中的最后一个元素

	list<int>l;for (int i = 0; i < 6; i++){l.push_back(i);}cout << l.back();

 五、修饰符

1.push_front()和pop_front()

push_front()的作用: 在list对象的头部插入一个元素val。

用法:在l的前面插入一个元素9.

	l.push_front(9);

 pop_front()的作用:删除list对象的第一个元素。

用法:删除l的第一个元素0。

	l.pop_front();

 2.push_back()和pop_back()

push_back()的作用:在其当前最后一个元素之后添加新元素val。

用法:在l的尾部不断的插入元素。

	list<int>l;for (int i = 0; i < 6; i++){l.push_back(i);}for (auto i : l){cout << i << ' ';}

pop_back()的作用:删除列表容器中的最后一个元素。

用法:删除l中的最后一个元素5.

	l.pop_back();

 3.insert()

作用:在指定位置插入一个元素val。 

用法:

在第1个元素前面插入一个元素9.

在第一个元素前面插入两个元素7.

在第三个元素前面插入两个元素10.

 

l.insert(l.begin(), 9);
l.insert(l.begin(),2,7);
auto it = next(l.begin(), 2);
l.insert(it, 2, 10);

 4.erase()

作用:删除指定位置或者区域内的元素。

用法:

删除指定位置的元素。

删除指定区间的元素。

 

auto it = next(l.begin(), 3);
l.erase(it);	
auto it = next(l.begin(), 2);
l.erase(it, l.end());

 5.resize()

作用:调整容器的大小,使其包含 n 个元素。如果 n 小于当前容器大小,则内容将减少到其前 n 个元素,删除超出此部分的元素(并销毁它们)。如果 n 大于当前容器大小,则通过在末尾插入所需数量的元素来扩展内容,以达到 n 的大小。如果指定了 val ,则新元素将初始化为 val 的副本,否则,它们将进行值初始化。

用法:

将l的大小调整为3.

将l的大小调整为7,并用0填补。

 

l.resize(3);
l.resize(7,0);

 6.clear()

作用: 从列表容器中删除所有元素(已销毁),并保留容器的大小 0。

用法:删除l中的所有元素。

	l.clear();

 六、操作

1.splice()

作用:将元素从 x 传输到容器中,并将它们插入到相应位置

用法:从l2的第3个元素后面插入l1的元素。

	auto it = next(l2.begin(), 3);l2.splice(it, l1);

 2.remove()

作用:从容器中删除所有比较等于 val 的元素。 

用法:将等于3的元素删除。

	l.remove(3);

 3.unique()

作用:从容器中每个连续的相等元素组中删除除第一个元素之外的所有元素。请注意,只有当元素与紧接在它前面的元素相比相等时,才会从列表容器中删除该元素。

用法:

	l.unique();

4.sort()

作用:将其进行排序。

用法:

从小到大排序。

从大到小排序。

l.stor();
l.sort(greater<int>());

 5.reverse()

作用:反转列表容器内的值。

用法: 将l反转。

l.reverse();

 

相关文章:

c++的list类

本篇将讲述list类中的各种重要和常用函数&#xff08;begin&#xff08;&#xff09;、end&#xff08;&#xff09;、rbegin&#xff08;&#xff09;、rend&#xff08;&#xff09;、empty&#xff08;&#xff09;、size&#xff08;&#xff09;、front&#xff08;&#…...

uniapp数据缓存

利用uniapp做开发时&#xff0c;缓存数据是及其重要的&#xff0c;下面是同步缓存和异步缓存的使用 同步缓存 在执行同步缓存时会阻塞其他代码的执行 ① uni.setStorageSync(key, data) 设置缓存&#xff0c;如&#xff1a; uni.setStorageSync(name, 张三) ② uni.getSt…...

HarmonyOS-权限管理

一. 权限分类 1. system_grant system_grant 为系统授权&#xff0c;无需询问用户&#xff0c;常用的权限包括网络请求、获取网络信息、获取wifi信息、获取传感器数据等。 /* system_grant&#xff08;系统授权&#xff09;*/static readonly INTERNET ohos.permission.INTE…...

Github 2024-11-02 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-02统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目2Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust, Dart协议类型:GNU Affero Genera…...

修改HarmonyOS鸿蒙图标和名字,打包后安装到真机,应用图标丢失变成透明,修改名字也不生效,还是默认的labeL解决方案教程

HarmonyOS鸿蒙打包hap 安装应用到桌面没有图标&#xff0c;用hdc安装到真机&#xff0c;打包后应用图标丢失变成透明&#xff0c;名字也还是默认的label的bug&#xff0c;以下是解决方案 以下是修改方案&#xff1a; 1、修改应用名字&#xff1a; 2、修改应用图标&#xff1a…...

unreal engine5动画重定向

UE5系列文章目录 文章目录 UE5系列文章目录前言一、下载动画资源二、创建IK Rig&#xff08;IK绑定&#xff09; 前言 在Unreal Engine 5.4中&#xff0c;动画重定向&#xff08;Animation Retargeting&#xff09;和动作匹配&#xff08;Motion Matching&#xff09;是两种不…...

蓝桥杯练习笔记(二十-日期问题)

日期题常见于填空题&#xff0c;关键点涉及闰年的判断和星期几的判断 1.根据间隔天数计算日期 题目来源&#xff1a;CSDN算法技能树 在X星系的广袤空间中漂浮着许多X星人造“炸弹”&#xff0c;用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如&#xff1a;…...

jenkins 构建报错 mvn: command not found

首先安装过 maven&#xff0c;并且配置过环境变量 win r ,输入 cmd 键入 mvn -v 出现上图输出&#xff0c;则证明安装成功。 原因 jenkins 没有 maven 配置全局属性, 导致无法找到 mvn 命令。 解决方案 找到全局属性&#xff0c;点击新增&#xff0c;配置 MAVEN_HOME 路…...

Vue computed watch

computed watch watch current prev...

【java】java的基本程序设计结构06-运算符

运算符 一、分类 算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 1.1 算术运算符 操作符描述例子加法 - 相加运算符两侧的值A B 等于 30-减法 - 左操作数减去右操作数A – B 等于 -10*乘法 - 相乘操作符两侧的值A * B等于200/除法 - 左操作数除以右操作数B /…...

数据建模圣经|数据模型资源手册卷3,数据建模最佳实践

简介 本书采用了类设计模式的方式对数据模型进行高度抽象总结&#xff0c;展现了常见的数据模型构建模型等模型的作用、层次、分类、地位、沟通方式&#xff0c;和业务规则。使用一个强大的数据模型模式的数据建模&#xff0c;评估特定与广义模型的优缺点&#xff0c;有助于你改…...

Kafka相关知识点(上)

为什么要使用消息队列&#xff1f; 使用消息队列的主要目的主要记住这几个关键词:解耦、异步、削峰填谷。 解耦: 在一个复杂的系统中&#xff0c;不同的模块或服务之间可能需要相互依赖&#xff0c;如果直接使用函数调用或者 API 调用的方式&#xff0c;会造成模块之间的耦合…...

network HCIE认证

#1 ip地址设置 ip add 192.168.1.1 255.255.255.0 ip add 192.168.1.2 255.255.255.0 #2 DHCP 交换机上配置 system-view //进入系统配置 dhcp enable int g0/0/1 //接入接口管理 dhcp select interface //配置dncp选择接口 #3 DNS域名系统 int g0/0/1 dhcp server dn…...

造纸粉体分散机、改性包覆机、改性打散机

包覆改性机在造纸填料中的应用是近年来造纸行业技术创新的一个重要方向。通过包覆改性&#xff0c;可以改善填料的表面性质&#xff0c;提升其在纸张中的留着率和分布均匀性&#xff0c;进而增强纸张的性能&#xff0c;降低生产成本。以下是包覆改性机在造纸填料中的具体应用及…...

npm入门教程1:npm简介

一、基本概述 定义&#xff1a;npm是一个开源的JavaScript包管理器&#xff0c;它允许开发者下载、安装、发布和管理Node.js包。地位&#xff1a;npm是Node.js生态系统中不可或缺的一部分&#xff0c;为开发者提供了丰富的第三方库和工具。起源&#xff1a;npm由Isaac Z. Schl…...

Vue3使用AntV | X6绘制流程图:开箱即用

x6官方地址X6图编辑引擎 | AntV 官方文档仔细地介绍了很多丰富的功能&#xff0c;这里的demo可以满足基本的使用&#xff0c;具体拓展还需要仔细看文档内容 先上效果图 1、安装 通过 npm 或 yarn 命令安装 X6。 # npm npm install antv/x6 --save# yarn yarn add antv/x6 …...

grpc 快速入门

gRPC 是一个现代的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;由 Google 开发。它使用 HTTP/2 作为传输协议&#xff0c;并采用 Protocol Buffers&#xff08;protobuf&#xff09;作为接口描述语言&#xff08;IDL&#xff09;。gRPC 提供高效的通信、语言无关性…...

layui 实现 城市联动

<div class"layuimini-container"><form id"app-form" class"layui-form layuimini-form"><div class"layui-form-item"><label class"layui-form-label">标题</label><div class"la…...

C++11标准模板(STL)- 常用数学函数 - 分类及比较 - 对给定的浮点值分类(std::fpclassify)

常用数学函数 对给定的浮点值分类 std::fpclassify 定义于头文件 <math.h> #define fpclassify(arg) /* implementation defined */ (C99 起) 归类浮点值 arg 到下列类别中&#xff1a;零、非正规、正规、无穷大、 NaN 或实现定义类别。该宏返回整数值。 忽略 FLT_EV…...

报错:npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

报错场景 使用npm run dev 报错 npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 npm…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...