C++容器之list基本使用

embedded/2024/10/10 22:20:28/

目录

前言

list%E7%9A%84%E4%BB%8B%E7%BB%8D%EF%BC%9F-toc" style="margin-left:0px;">一、list的介绍?

二、使用

list%E7%9A%84%E6%9E%84%E9%80%A0-toc" style="margin-left:40px;">1.list的构造

list%20iterator%E7%9A%84%E4%BD%BF%E7%94%A8-toc" style="margin-left:40px;">2.list iterator的使用

list%20capacity-toc" style="margin-left:40px;">3.list capacity

 🥇 empty

 🥇size

list%20element%20access%C2%A0-toc" style="margin-left:40px;">4.list element access 

🥇 front

🥇 back

list%20modifiers%C2%A0-toc" style="margin-left:40px;">5.list modifiers 

 🥇 push_front

🥇 pop_front 

​编辑

🥇 push_back 

🥇 pop_back  

🥇 insert

🥇 erase

🥇 swap

​编辑 

🥇 clear

list%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8%E5%A4%B1%E6%95%88-toc" style="margin-left:40px;">6.list的迭代器失效

总结



前言

本文讲介绍C++中重要的容器list他的常见接口,并且会介绍list和vector的区别


list%E7%9A%84%E4%BB%8B%E7%BB%8D%EF%BC%9F">一、list的介绍?

list容器其实是一个带头节点的双向循环链表。下边是list的文档介绍

list的文档介绍

二、使用

list%E7%9A%84%E6%9E%84%E9%80%A0">1.list的构造

构造函数接口说明
list(sizt_t n,const T& val=T())构造的list中包含n个val的值
list()构造空的list
list(const list& x)构造拷贝函数
list(Inputiterator first,Inputiterator last)用[first,last]区间中的元素构造list

list%20iterator%E7%9A%84%E4%BD%BF%E7%94%A8" style="background-color:transparent;">2.list iterator的使用

可以暂时将迭代器理解成一个指针,该指针指向list中的某个节点,但是实际上list的迭代器实现相比于string和vector会更复杂一下。

函数声明接口说明
begin+end返回第一个元素的迭代器+最后一个元素下一个位置的迭代器
rbegin+rend返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位置的reverse_iterator,即begin位置。

注意:

1.begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动

2.rbegin(end)与rend(begin)为反向迭代器,对迭代器执行++操作,迭代器向前移动。 


list%20capacity">3.list capacity

 

函数声明接口说明
empty检测list是否为空,空返回true,否则返回false
size返回list中有效的节点个数

 🥇 empty

 🥇size

list%20element%20access%C2%A0">4.list element access 

函数声明接口说明
front返回list的第一个节点中值的引用
back返回list的最后一个节点中值的引用

🥇 front

🥇 back

list%20modifiers%C2%A0">5.list modifiers 

函数声明接口说明
push_frontlist首元素前插入值为val的元素
pop_front删除list中第一个元素
push_backlist尾部插入值为val的元素
pop_back删除list中最后一个元素
insertlist position位置插入值为val的元素
erase删除list position位置的元素
swap交换两个list中的元素
clear清空list中的有效元素

 🥇 push_front

🥇 pop_front 

🥇 push_back 

🥇 pop_back  

🥇 insert

🥇 erase

🥇 swap

 

🥇 clear

list其他的操作,可以查看list的文档说明 。

list%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8%E5%A4%B1%E6%95%88" style="background-color:transparent;">6.list的迭代器失效

前面说过,此处大家可将迭代器暂时理解成类似于指针, 迭代器失效即迭代器所指向的节点的无
效,即该节点被删除了 。因为 list 的底层结构为带头结点的双向循环链表 ,因此 list 中进行插入
时是不会导致 list 的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭
代器,其他迭代器不会受到影响
void TestListIterator1()
{int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };list<int> l(array, array + sizeof(array) / sizeof(array[0]));auto it = l.begin();while (it != l.end()){// erase()函数执行后,it所指向的节点已被删除,因此it无效,在下一次使用it时,必须先给其赋值l.erase(it);++it;}
}
// 改正
void TestListIterator()
{int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };list<int> l(array, array + sizeof(array) / sizeof(array[0]));auto it = l.begin();while (it != l.end()){l.erase(it++); // it = l.erase(it);}
}

总结

以上就是list容器的基本使用,希望可以帮助到大家,希望大家动动发财的小手点一下小赞,谢谢大家!!!!!!!


http://www.ppmy.cn/embedded/125568.html

相关文章

【2022工业3D异常检测文献】AST: 基于归一化流的双射性产生不对称学生-教师异常检测方法

Asymmetric Student-Teacher Networks for Industrial Anomaly Detection 1、Background 所谓的学生-教师网络&#xff0c;首先&#xff0c;对教师进行训练&#xff0c;以学习语义嵌入的辅助性训练任务&#xff1b;其次&#xff0c;训练学生以匹配教师的输出。主要目的是让学生…

学习文档三

超过 long 整型的数据应该如何表示? 基本数值类型都有一个表达范围&#xff0c;如果超过这个范围就会有数值溢出的风险。 在 Java 中&#xff0c;64 位 long 整型是最大的整数类型。 long l Long.MAX_VALUE; System.out.println(l 1); // -9223372036854775808 System.ou…

渐进蒸馏和v-prediction

渐进蒸馏和v-prediction TL;DR&#xff1a;比较早期的用蒸馏的思想来做扩散模型采样加速的方法&#xff0c;通过渐进地对预训练的扩散模型进行蒸馏&#xff0c;学生模型一步学习教师模型两步的去噪结果&#xff0c;不断降低采样步数。并提出一种新的参数化形式 v \mathbf{v} …

设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、原型模式2、原型模式的使用场景3、优点4、缺点5、主要角色6、代码示例7、总结题外话关于使用序列化实现深拷贝 设计模式概述 创建型模式&#xff1a;工厂方法、抽象方法、建造者、原型、单例。 结构型模式有&#xff1a;适配器、桥接、组合、装饰器、…

kubelet 运行机制、功能 全面分析

Kubelet 在Kubernetes集群中&#xff0c;在每个Node&#xff08;又称为Minion&#xff09;上都会启动一个Kubelet服务进程。该进程用于处理Master下发到本节点的任务&#xff0c;管理Pod及Pod中的容器。每个Kubelet进程都会在API Server上注册节点自身的信息&#xff0c;定期向…

微信搜一搜又升级啦!

据“微信派”微信公号10月8日消息&#xff0c;微信搜一搜上线“搜索直达”功能&#xff0c;相关话题登上微博热搜。网友表示这个更新可以省去翻设置功能的步骤&#xff0c;更直接、快速地解决问题。 搜“拍一拍设置” 搜“深夜模式设置” 搜“来电铃声设置” 搜“关怀模式”设置…

王道408考研数据结构-图-第六章

6.1 图的基本概念 6.1.1 图的定义 图G由顶点集V和边集 E组成&#xff0c;记为G(V,E),其中 V(G)表示图G中顶点的有限非空集&#xff1b;E(G)表示图G中顶点之间的关系(边)集合。若V{v?,v?,…,vn},则用|M表示图G中顶第6章 点的个数&#xff0c;E{(u,v) | uεV,vεV},用|E|表示图…

SQL自学:什么是SQL的聚集函数,如何利用它们汇总表的数据

在 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;中&#xff0c;聚集函数也称为聚合函数&#xff0c;是对一组值进行计算并返回单一值的函数。 一、常见的聚集函数及功能 1. AVG()&#xff1a;用于计算某一列的平均值。 例如&#xff0c;…