C++容器——list

目录

list容器

list容器使用流程

 加入头文件

定义

list容器的使用

添加元素:

删除元素:

访问元素:

容器大小: 

迭代器操作:

其他操作:


list容器

功能:将数据进行链式存储

链表(list):是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。

链表的组成:链表由一系列结点组成。

结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

SLT中的链表是一个双向循环链表。


list容器使用流程

  1. 需要加入头文件
  2. 定义lis容器
  3. 使用list容器操作

 加入头文件

#include<list>

定义

默认大小初始化为0

std::list<int> first(2);
//大小为2的list容器默认值为0

n个一样的值赋值

std::list<int> first(2,1);
//容器里为2个1

 拷贝初始化

std::list<int> first;
std::list<int> secend(first);

使用初始化列表初始化包含元素的 list 容器:

std::list<int> first = {1, 2, 3, 4, 5};

使用迭代器范围初始化 list 容器:

std::list<int> first(a.begin(), a.end());

list容器的使用

添加元素:

push_back(val): 将元素 val 添加到链表的末尾。

push_front(val): 将元素 val 添加到链表的开头。

insert(pos,elem);在pos位置插elem元素的拷贝,返回新数据的位置

insert(pos,n,elem);在pos位置插入n个elem数据,无返回值.

insert(pos,beg,end);在pos位置插入[beg,end)区间的数据,无返回值.

删除元素:

pop_back(): 删除链表末尾的元素。

pop_front(): 删除链表开头的元素。

erase(begend);删除[beg,end)区间的数据,返回下一个数据的位置

erase(pos);删除pos位置的数据,返回下一个数据的位置

remove(val): 删除链表中所有值为 val 的元素。

访问元素:

front(): 返回链表开头的元素。

back(): 返回链表末尾的元素。

容器大小: 

resize(num):重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。

resize(num,elem):重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。 

迭代器操作:

begin(): 返回指向链表第一个元素的迭代器。

end(): 返回指向链表最后一个元素之后位置的迭代器。

rbegin(): 返回指向链表最后一个元素的逆迭代器。

rend(): 返回指向链表第一个元素之前位置的逆迭代器。

其他操作:

size(): 返回链表中元素的个数。

empty(): 判断链表是否为空。

clear(): 清空链表中的所有元素。

sort():用于对容器中的元素进行排序,默认是按照升序进行排序。如果需要自定义排序顺序,可以提供自定义比较函数作为参数。

reverse(): 函数用于反转容器中的元素的顺序。

splice() :用于在不同位置之间移动或合并元素,或将另一个容器中的元素插入到当前容器中

splice()可以通过几种不同的形式来使用,具体取决于具体的需求。

splice() 函数的几种形式:

void splice(const_iterator pos, list& other);
void splice(const_iterator pos, list& other, const_iterator it);
void splice(const_iterator pos, list& other, const_iterator first, const_iterator last);

第一个参数 pos 是一个迭代器,指定了元素将要插入到的位置。

第二个参数 other 是另一个 std::list 容器,表示从这个 list 中移动元素。

如果是第二种形式,第三个参数 it 是另一个容器 other 中的一个元素的迭代器,表示要移动的元素。

如果是第三种形式,第三个参数 first 和第四个参数 last 分别是另一个容器 other 中的范围,表示要移动的元素范围。

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

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

相关文章

AWTK应用程序将资源放到 zip 文件中的方法

在支持文件系统的时候&#xff0c;AWTK 的资源缺省是以独立文件的形式放在指定目录里的。但在有的情况下&#xff0c;把全部资源文件放到一个 zip 文件中&#xff0c;是更好的或唯一的选择。比如&#xff1a; 开发 PC 应用程序。 在没有文件系统的情况下&#xff0c;把资源放到…

【软测学习笔记】Python 教程(1)

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;菜鸟教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、Python 简介 二、Python发展历史 三、Python 特点 四、 Python 环…

kali linux2024.1版安装

1 基于 VMware 安装 Kali 系统 打开已经安装好的 VMware 程序&#xff0c;点击选项卡中的“主页”--》而后点击“创建新的虚拟机” 选择“典型(推荐)”&#xff0c;并点击“下一步” 客户机操作系统镜像选择&#xff1a;选择“稍后安装操作系统”&#xff0c;并点击“下一步”…

《中阿科技论坛(中英文)》是什么级别的期刊?是正规期刊吗?

问题解答 问&#xff1a;《中阿科技论坛&#xff08;中英文&#xff09;》是核心期刊吗&#xff1f; 答&#xff1a;不是&#xff0c;但是正规期刊 问&#xff1a;《中阿科技论坛&#xff08;中英文&#xff09;》是什么级别期刊&#xff1f; 答&#xff1a;省级 主管单位…

多线程的情况下 AopContext.currentProxy()切面代理失效问题

多线程的情况下 AopContext.currentProxy()切面代理失效问题 在多线程环境下&#xff0c;AopContext.currentProxy() 可能会遇到问题&#xff0c;特别是在某些情况下&#xff0c;它无法正确地获取到当前线程的代理对象。这通常发生在以下几种情况&#xff1a; 线程不是由Spri…

深度神经网络详解

深度神经网络&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;是机器学习领域中一种重要的人工神经网络。它主要由多层结构组成&#xff0c;通常包括输入层、隐藏层和输出层&#xff0c;每层之间通过权重进行连接。这些权重在训练过程中通过学习来调整&#xff0c;…

Vue线上环境禁止打印console.log

当我们在开发项目时&#xff0c;我们会使用大量的console.log&#xff0c;这样方便我们去调试&#xff0c;但是当正常上线后&#xff0c;在生产环境&#xff0c;我们是不喜欢打印的信息暴露在浏览器控制台的。 这时候我们可以通过一行代码解决&#xff1a; 在main.js文件中添加…

代码随想录算法训练营第二十五天|235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

669. 修剪二叉搜索树 文档讲解&#xff1a;代码随想录 代码链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 这道题目中删除的可能不只是一个节点 常见误区&#xff1a; 遇到一个不在区间范围内的节点&#xff0c;我们不能直接将其删除&#xff0c;因为其左右孩子可…

转转小程序数据处理

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872&#xff0c;x30184483x…

仿照JDK源码写一个ArrayList实现

仿照JDK编写一个简化的ArrayList实现是一个很好的学习Java集合框架内部工作原理的方式。以下是一个简化版的ArrayList实现,它包含了基本的添加、获取、删除和大小检查功能。 public class MyArrayList<E> {private static final int DEFAULT_CAPACITY = 10;private Obj…

20240511日记

今天工作内容&#xff1a; 1.二期2号机EAP测试 2.二期开门机器暂停&#xff08;停轴&#xff0c;停流水线电机&#xff09;&#xff0c;关闭门后继续功能测试 3.针点位偏移还需要调整&#xff0c;未进行大批量验证是否偏移&#xff08;S3模板点位测试&#xff0c;两台机各焊…

BUU-[GXYCTF2019]Ping Ping Ping

考察点 命令执行 题目 解题 简单测试 ?ip应该是一个提示&#xff0c;那么就测试一下?ip127.0.0.1 http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip127.0.0.1发现正常回显 列出文件 那么猜测一下可能会有命令执行漏洞&#xff0c;测试?ip127.0.…

SolidWorks将装配体中的草图投影到零件中

SolidWorks将装配体中的草图投影到零件中 在SolidWorks中&#xff0c;将装配体中的草图投影到零件中是一种高级技术&#xff0c;特别适用于那些需要基于装配体上下文创建或修改零件的情形。这个过程不仅有助于确保零件间的精确配合&#xff0c;还能显著提高设计效率。下面是一…

dos命令改3389端口,通过dos命令更改3389端口的操作

要使用DOS命令更改3389端口&#xff0c;通常涉及修改Windows注册表中的相关键值。请注意&#xff0c;直接操作注册表具有一定的风险&#xff0c;因此在进行任何更改之前&#xff0c;请确保您了解正在进行的操作&#xff0c;并已经采取了适当的备份措施。 以下是一个基本的操作步…

记录一次接口优化的过程。接口响应时间从500s下降到5s。

记录一次接口优化的过程。接口响应时间从500s下降到5s。 接口说明&#xff1a; 该接口通过用户导入的一年内每天的厂区用电功率数据来计算用户安装储能设备后的收益情况。 用电功率数据具体为每15分钟一条&#xff0c;一年约有 12*30*24*4 34560 条。 代码循环情况为&…

ES 7.0.0 升级 7.1.0,离线升级

-- 已亲测&#xff0c;可用 1. 停止es 7.0 服务&#xff0c;集群需要全部停止 2. 备份es 7.0 的数据文件 cp -r data data70 3. 下载es 7.1 版本 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz 4. 将es 7.0 的数据文件复…

详解GaussDB(DWS)中的行执行引擎

1.前言 GaussDB&#xff08;DWS&#xff09;包含三大引擎&#xff0c;一是SQL执行引擎&#xff0c;用来解析用户输入的SQL语句&#xff0c;生成执行计划&#xff0c;供执行引擎来执行&#xff1b;二是执行引擎&#xff0c;其中包含了行执行引擎和列执行引擎&#xff0c;执行引擎…

event::Events::DisconnectWorldUpdateBegin 没有

问题&#xff1a; ROS项目编译报错event::Events::DisconnectWorldUpdateBegin 没有 解决方法&#xff1a; GAZEBO版本问题导致有些函数被删&#xff0c;解决方法直接找到对应版本的源文件进行替换&#xff0c;即可。 ROS18.04 Gazebo9 robotiq85 视觉机械臂抓取仿真_error:…

CentOS常见的命令及其高质量应用

CentOS是一个流行的、基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的开源服务器操作系统。由于其稳定性和强大的性能&#xff0c;CentOS被广泛应用于各种服务器环境中。为了有效地管理和维护CentOS系统&#xff0c;熟悉并掌握其常见命令是非常重要的。本文将介绍…

当时这样说就好了的笔记

系列文章目录 当时这样说就好了的笔记 文章目录 系列文章目录一、 不用好口才&#xff0c;怎么谈都讨喜的“说话金律”1、 掌握对方爱聊什么是交谈热络的第一步2、 装笨让对方当主角&#xff0c;和谁都能聊不停3、 “讲道理”谁都怕&#xff0c;坚持己见最伤感情4、 懂“聆听附…