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

C++标准模板库(STL)-list介绍

C++标准模板库(STL)中的list是一个双向链表,它提供了高效的插入、删除和反转操作。list支持随机访问,这意味着我们可以直接访问任何元素,而不需要从头开始遍历链表。此外,list还支持反向迭代,即可以从尾部开始迭代。

list基本操作

  1. push_back():在尾部添加一个元素。
myList.push_back(1); // myList: 1
myList.push_back(2); // myList: 1, 2
myList.push_back(3); // myList: 1, 2, 3
  1. push_front():在头部添加一个元素。
myList.push_front(0); // myList: 0, 1, 2, 3
  1. pop_back():删除最后一个元素。
myList.
pop_back(); // myList: 0, 1, 2
  1. pop_front():删除第一个元素。
myList.pop_front(); // myList: 1, 2
  1. insert(pos, n, elem):在pos位置插入n个elem数据。例如,在位置1插入2个值为3的元素。
myList.insert(myList.begin() + 1, 2, 3); // myList: 0, 3, 3, 1, 2
  1. erase(pos):删除pos位置的数据,返回下一个数据的位置。例如,删除位置1的数据并返回下一个位置。
list<int>::iterator it = myList.erase(myList.begin() + 1); // myList: 0, 1, 2
  1. remove(elem):删除容器中所有与elem值匹配的元素。例如,删除所有值为1的元素。
myList.remove(1); // myList: 0, 2
  1. size():返回容器中元素的个数。例如,返回myList中元素的个数。
int size = myList.size(); // size: 2

list特性

list是一个双向链表,其特性包括:

  1. 可以在常数时间内进行任意位置的插入和删除操作。
  2. 可以前后双向迭代。
  3. 底层是双向链表结构,每个元素存储在互不相关的独立节点中,节点中通过指针指向其前一个元素和后一个元素。

相比vector,list在任意位置插入、移除元素的执行效率通常更好。然而,list不支持任意位置的随机访问,要访问list的特定位置元素,需要从已知的位置(如头部或尾部)开始迭代到该位置,这个过程需要线性时间开销。此外,list还需要一些额外的空间来保存每个节点的相关信息。

应用举例

#include <iostream>
#include <list>int main() {std::list<int> myList;// 添加元素到链表myList.push_back(1);myList.push_back(2);myList.push_back(3);// 使用迭代器遍历链表for (std::list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;// 从链表中删除元素myList.pop_front();myList.pop_back();// 使用反向迭代器遍历链表for (std::list<int>::reverse_iterator it = myList.rbegin(); it != myList.rend(); ++it) {std::cout << *it << " ";}std::cout << std::endl;return 0;
}

输出:

1 2 3 
2 3

相关文章:

C++标准模板库(STL)-list介绍

C标准模板库&#xff08;STL&#xff09;中的list是一个双向链表&#xff0c;它提供了高效的插入、删除和反转操作。list支持随机访问&#xff0c;这意味着我们可以直接访问任何元素&#xff0c;而不需要从头开始遍历链表。此外&#xff0c;list还支持反向迭代&#xff0c;即可…...

Arrays.asList

直接去看原文 原文链接:Arrays.asList() 详解-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 【1. 要点】 该方法是将数组转化成List集合的方法。 List<String> lis…...

XXXX项目管理目标(某项目实施后基于软件工程的总结)

&#xff08;注&#xff1a;此文作于2007年&#xff0c;算是个缅怀&#xff0c;或者是个吐槽。所有注都是本次发表新加的。原文中的省略号就是原文&#xff0c;并非删减。&#xff09; 目录 一、序 二、态度问题 三、问题点 3.1 项目过程管理的问题 3.2 配置管理的问题 …...

连新手小白都知道的电子画册一键生成器,你还不知道吗?

相信大家平时见得比较多的是纸质画册&#xff0c;而对于电子画册大家又了解多少呢&#xff1f;电子画册近年来倍受众多企业青睐&#xff0c;制作一本好的电子画册能够让企业在市场竞争中脱颖而出&#xff0c;给人以深刻印象。如何制作呢&#xff1f; 其实很简单&#xff0c;关…...

JAVAEE初阶 操作系统

操作系统的相关知识 一.操作系统的定位二.操作系统的作用三.什么是进程/任务1.进程在系统中如何操作和管理 四.PCB中的核心属性1.pid2.内存指针3.文件描述符表 五.CPU1.cpu的特性:分时复发 六.PCB中进行调度的属性1.状态2.优先级3.记账信息 一.操作系统的定位 二.操作系统的作用…...

第四代智能井盖传感器:万宾科技智能井盖位移监测方式一览

现在城市化水平不断提高&#xff0c;每个城市的井盖遍布在城市的街道上&#xff0c;是否能够实现常态化和系统化的管理&#xff0c;反映了一个城市治理现代化水平。而且近些年来住建部曾多次要求全国各个城市加强相关的井盖管理工作&#xff0c;作为基础设施重要的一个组成部分…...

了解JS中的混个对象“类”

类是面向对象的设计模式&#xff0c;它包括实例化、继承和多态 1、理论 面向对象变成强调的是数据和操作的行为本质上是相互关联的&#xff0c;因此好的设计就是把数据以及和他相关的行为打包&#xff08;封装&#xff09;起来&#xff0c;我们也叫他数据结构。 类的一个核心…...

在Sprinng Boot中使用Redis充当缓存

关于我们使用EhCache可以适应很多的应用场景了&#xff0c;但是因为EhCache是进程内的缓存框架&#xff0c;在集群模式下&#xff0c;我们在我们的应用服务器或者云服务器之间的缓存都是独立的。故而在不同的服务器之间的进程会存在缓存不一致的情况&#xff0c;就算我们的EhCa…...

【网络】TCP协议的相关实验

TCP协议的相关实验 一、理解listen的第二个参数1、实验现象2、TCP 半连接队列和全连接队列3、关于listen的第二个参数的一些问题4、SYN洪水Ⅰ、什么是SYN洪水攻击Ⅱ、如何解决SYN洪水攻击&#xff1f; 二、使用Wireshark分析TCP通信流程 一、理解listen的第二个参数 在编写TCP…...

微服务测试怎么做

开发团队越来越多地选择微服务架构而不是单体结构&#xff0c;以提高应用程序的敏捷性、可扩展性和可维护性。随着决定切换到模块化软件架构——其中每个服务都是一个独立的单元&#xff0c;具有自己的逻辑和数据库&#xff0c;通过 API 与其他单元通信——需要新的测试策略和新…...

第9章 K8s进阶篇-持久化存储入门

9.1 k8s存储Volumes介绍 Container&#xff08;容器&#xff09;中的磁盘文件是短暂的&#xff0c;当容器崩溃时&#xff0c;kubelet会重新启动容器&#xff0c;但最初的文件将丢失&#xff0c;Container会以最干净的状态启动。另外&#xff0c;当一个Pod运行多个Container时&…...

MathType2024最新word公式编辑器

使用word进行论文编写时&#xff0c;常需要使用公式编辑器&#xff0c;但有些word中并没有公式编辑器&#xff0c;这时应该怎么办呢&#xff1f;本文将围绕word里没有公式编辑器怎么办&#xff0c;word中的公式编辑器怎么用的内容进行介绍。 一、word里没有公式编辑器怎么办 …...

英语语法 - 主语从句

[ 主语从句 ] 没有时态要求 | 三单 1. 从属连词 that 引导的主语从句 | 不做句子成分 | 没有意义 That a monster attacked a ship last week shocked the world. That I bought a house in Beijing shocks many people. That Oscar is rich makes us upset. That he didnt wa…...

千梦网创:实现自动化“挂机躺盈”的三种方法

在互联网众多行业中&#xff0c;有很多人一直在寻找所谓的“挂机躺盈”的项目&#xff0c;在理财领域这种收入被称为“被动收入”。 天上不会掉馅饼这是一句讲烂掉的话了&#xff0c;躺在家里吃白食等着钱进账是一件不可能的事情。 然而如果你看到身边有“被动收入”的例子&a…...

微信小程序页面传递参数方法

说明 页面跳转方法有很多中&#xff0c;但经常会通过一个页面传递参数给另一个页面&#xff0c;非常的常见。但数据量大的时候&#xff0c;通常用字符串传递&#xff0c;但会显得过于臃肿&#xff0c;下面介绍页面传递参数的各种方式。 一、页面跳转链接携带参数 例如&#xf…...

出行类app如何提升广告变现收益?

出行类APP已经成为越来越多人们出行的首选&#xff0c;出行类app在变现方式上存在以下痛点&#xff1a;APP功能单一、使用场景单一&#xff1b;用户使用时间集中&#xff0c;粘性低...这些痛点使得开发者获取收益的提升面临极大的挑战。 https://www.shenshiads.com 如何让出…...

万能在线答题考试小程序源码系统 既能刷题 又能考试 带完整的搭建教程

现如今&#xff0c;线上学习和考试已经成为一种趋势。近年来&#xff0c;移动端的普及以及微信小程序的兴起&#xff0c;使得在线答题考试系统变得更加便捷和高效。今天罗峰就来给大家介绍一款万能在线答题考试小程序源码系统&#xff0c;既能刷题&#xff0c;又能考试&#xf…...

《Linux从练气到飞升》No.30 深入理解 POSIX 信号量与生产消费模型

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…...

高防IP可以抵御哪些恶意攻击

高防IP协议可以隐藏用户的站点&#xff0c;使得攻击者无法发现恶意攻击的目标网络资源&#xff0c;从而提高了源站的安全性。能够有效抵御常见的恶意攻击类型ICMPFlood、UDPFlood、 TCPFlood、SYNFlood、ACKFlood等&#xff0c;帮助游戏、金 融、电子商务、互联网、政企等行业抵…...

vivado产生报告阅读分析6-时序报告2

1、复查时序路径详情 单击“ OK ”运行报告命令后 &#xff0c; 将打开一个新窗口。这样您即可复查其中内容。在其中可查看执行选定的每种类型 (min/max/min_max ) 的分析之后所报告的 N 条最差路径。 下图显示的“Report Timing ” &#xff08; 时序报告 &#xff09; 窗口…...

Playnite:你的终极游戏库统一管理器,告别平台切换烦恼

Playnite&#xff1a;你的终极游戏库统一管理器&#xff0c;告别平台切换烦恼 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项…...

linux IO重定向

IO中的文件描述符0 ,stdin, 标准输入, 指向键盘 1 ,stdout, 标准输出, 指向终端屏幕 2 ,stderr, 标准错误输出, 指向终端屏幕 /dev/null 无底洞&#xff0c;有些不想要的输出信息可以送到这里。& , 在重定向中引用文件描述符.例子.2>&1 , 把 stderr&#xff08;文…...

从RTL代码到SDC约束:手把手教你为PLL/DCM生成的时钟写对时序约束

从RTL代码到SDC约束&#xff1a;手把手教你为PLL/DCM生成的时钟写对时序约束 在数字芯片设计流程中&#xff0c;时钟约束的正确性直接影响着时序收敛的效率和质量。很多工程师能够熟练编写RTL代码&#xff0c;却在转换为SDC约束时遇到困惑——特别是当设计中使用PLL、DCM或自定…...

Windows应用层Hook原理与合规实践指南

我不能按照您的要求生成关于“逆向微信4.0撤回机制&#xff1a;从符号恢复到DLL劫持实战”的博文内容。原因如下&#xff1a;违反平台安全与合规底线&#xff1a;该标题明确指向对微信客户端的逆向分析、符号恢复及DLL劫持等行为。微信作为受法律保护的商用即时通讯软件&#x…...

华为员工职业发展手册

导读&#xff1a;这份华为员工职业发展手册&#xff0c;围绕员工入职、成长、晋升与激励构建了完整的职业发展体系&#xff0c;核心是明确企业、管理者与员工三方责任&#xff0c;搭建多元发展通道&#xff0c;助力员工与企业共成长。关注公众号&#xff1a;【互联互通社区】&a…...

二刷hot100-101.对称二叉树

递归写法&#xff1b;终止条件有很多&#xff0c;左右节点都为空&#xff0c;返回true&#xff1b;有一方为空或者值不相等&#xff0c;返回false&#xff1b;如果都不满足&#xff0c;进入下一层递归&#xff1a;左的左和右的右比较&#xff0c;左的右和右的左比较&#xff1b…...

华为防火墙双机热备HRP配置避坑指南:心跳线选错接口,业务秒断!

华为防火墙双机热备HRP实战&#xff1a;心跳线接口选择的黄金法则与故障规避 在金融、医疗、政务等对业务连续性要求极高的场景中&#xff0c;华为防火墙双机热备方案已成为保障网络高可用的标配。但许多工程师在部署HRP&#xff08;Huawei Redundancy Protocol&#xff09;时&…...

AI Agent培训赋能金融/医疗/制造三大赛道(附2023真实训战数据与客户增效曲线)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI Agent培训赋能产业变革的底层逻辑 AI Agent并非传统意义上的自动化脚本&#xff0c;而是具备目标理解、环境感知、规划推理与工具调用能力的智能体。其产业赋能的底层逻辑&#xff0c;在于将人类专家…...

魔兽争霸3:让经典游戏在现代电脑上重获新生的3个秘密

魔兽争霸3&#xff1a;让经典游戏在现代电脑上重获新生的3个秘密 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还记得那些年在网吧里通宵达旦玩魔兽…...

WSA Toolbox:Windows 11上一键安装Android应用的智能解决方案

WSA Toolbox&#xff1a;Windows 11上一键安装Android应用的智能解决方案 【免费下载链接】wsa-toolbox A Windows 11 application to easily install and use the Windows Subsystem For Android™ package on your computer. 项目地址: https://gitcode.com/gh_mirrors/ws/…...