当前位置: 首页 > 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…...

OpenCV基本操作(python开发)——(7)实现图像校正

OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;1&#xff09; 读取图像、保存图像 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;2&#xff09;图像色彩操作 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;3&…...

[项目] C++基于多设计模式下的同步异步日志系统

[项目] C基于多设计模式下的同步&异步日志系统 文章目录 [项目] C基于多设计模式下的同步&异步日志系统日志系统1、项目介绍2、开发环境3、核心技术4、日志系统介绍4.1 日志系统的价值4.2 日志系统技术实现4.2.1 同步写日志4.2.2 异步写日志 5、相关技术知识5.1 不定参…...

Vue常用的修饰符有哪些?

修饰符&#xff08;Modifiers&#xff09;是用于指定以特殊方式绑定或处理Vue事件或指令的特殊符号。 事件修饰符 .stop: 阻止时间继续传播&#xff0c;相当于调用event.stopPropagation() .prevent: 阻止默认事件&#xff0c;相当于调用event.preventDefault() .capture: 使…...

AnatoMask的分层图像编码器-解码器

方法思想 采用多尺度编码器-解码器主干&#xff1a; 在编码器中&#xff0c;把CT图像分解成不同大小的图像块&#xff0c;从这些图像块中提取特征在解码器中&#xff0c;重建被掩盖图像时&#xff0c;考虑图像块的空间关系 输入D&#xff08;深度Depth&#xff09;张H&#x…...

面向对象编程的核心特性:封装、继承、多态与抽象

封装&#xff08;Encapsulation&#xff09;&#xff1a; 定义&#xff1a;封装是面向对象编程中的一个基本原则&#xff0c;它指的是将对象的状态&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;捆绑在一起&#xff0c;并对外隐藏对象的内部实现细节&#xf…...

ubuntu openmpi安装(超简单)

openmpi安装 apt update apt install openmpi-bin openmpi-common libopenmpi-dev安装到此完毕 测试一下&#xff0c;success !...

Python中的SQL数据库管理:SQLAlchemy教程

Python中的SQL数据库管理&#xff1a;SQLAlchemy教程 在Python应用程序中&#xff0c;操作数据库是常见的需求之一。而 SQLAlchemy 是一个功能强大的数据库管理库&#xff0c;它提供了Pythonic的接口来管理和查询SQL数据库。SQLAlchemy 兼具 ORM&#xff08;对象关系映射&…...

LeetCode --- 421周赛

题目列表 3334. 数组的最大因子得分 3335. 字符串转换后的长度 I 3336. 最大公约数相等的子序列数量 3337. 字符串转换后的长度 II 一、数组的最大因子得分 数据范围足够小&#xff0c;可以用暴力枚举移除的数字&#xff0c;得到答案&#xff0c;时间复杂度为O(n^2)&#…...

简单了解前缀树/字典树(Trie树)C++代码

介绍Trie树 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补全和拼写检查。 前缀树也有一些其它的名称&#xff1a;字典…...

ubuntu安装与配置Nginx(2)

1. 配置 Nginx Nginx 的配置文件通常位于 /etc/nginx/nginx.conf&#xff0c;而虚拟主机的配置文件通常在 /etc/nginx/sites-available/ 和 /etc/nginx/sites-enabled/ 目录中。 在/etc/nginx/conf.d目录下新建xx.conf文件&#xff0c;配置文件&#xff0c; nginx -t 检查语法…...