C++|STL-list运用(1)

news2024/9/19 10:51:40

cplusplus.com/reference/list/list/?kw=list

list介绍

list是一个双向循环链表,双向循环链表它的每个节点都有两个链接,一个指向前一个节点,另一个指向下一个节点,且最后一个结点指向头节点。

结点组成

1.数据域

2.指针域 :有两个指针域,一个指向前一个结点,一个指向后一个结点

优点

1.相比于单向链表,双向链表在插入和删除操作时更加灵活,因为它们可以从两个方向进行操作;

2.相比于序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。

缺点

1.最大的缺陷是不支持任意位置的随机访问,必须从已知的位置(比如头部或者尾部)迭代到该位置;

2.需要额外的指针来维护前一个和下一个节点的链接。

list使用

list的初始化

与vector相同,使用时要包含list头文件;声明是容器类型 <数据类型>name;

vector <int>arr;//定义了一个空的数组

list <int>mylist;//定义一个空的双向循环链表

其他初始化方式还有

list<int>mylist(2,3);//定义一个里面有两个三的双向循环链表

list<int>mylist1(mylist)//用mylist初始化mylist1

list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2

其他函数

empty()——判空

检测list是否为空,是返回true,否则返回false

#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>list1;
	list<int>mylist(2, 3);
	list<int>mylist1(mylist);
	cout << "检测链表是否为空list1——" << list1.empty() << endl;
	cout << "检测链表是否为空mylist——" << mylist.empty() << endl;

	return 0;
}

 

size()——数据个数

返回list中有效节点的个数

#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>list1;
	list<int>mylist(2, 3);
	list<int>mylist1(mylist);
	cout << "list1数据个数——" << list1.size() << endl;
	cout << "mylist数据个数——" << mylist.size() << endl;

	return 0;
}

 

front()——第一个数据

返回list的第一个节点中值的引用

#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>list1;
	list<int>mylist(2, 3);
	list<int>mylist1(4, 7);
	cout << "mylist第一个数据——" << mylist.front() << endl;
	cout << "mylist1第一个数据——" << mylist1.front() << endl;

	return 0;
}

 

back()—— 最后一个数据

返回list的最后一个节点中值的引用

#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>list1;
	list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2
	list<int>mylist1 = { 3, 4 };//同上
	cout << "mylist最后一个数据——" << mylist.back() << endl;
	cout << "mylist1最后一个数据——" << mylist1.back() << endl;

	return 0;
}

push_front(int val)——前插

在list首元素前插入值为val的元素

#include<iostream>
#include<list>
using namespace std;
int main()
{
	
	list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2
	cout << "push_front()前mylist第一个数据——" << mylist.front() << endl;
	mylist.push_front(1);
	cout << "push_front()后mylist第一个数据——" << mylist.front() << endl;


	return 0;
}

pop_front()——前删

删除list中第一个元素

#include<iostream>
#include<list>
using namespace std;
int main()
{
	list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2
	cout << "pop_front()前mylist第一个数据——" << mylist.front() << endl;
	mylist.pop_front();
	cout << "pop_front()后mylist第一个数据——" << mylist.front() << endl;


	return 0;
}

push_back(int  val)——尾插

在list尾部插入值为val的元素

#include<iostream>
#include<list>
using namespace std;
int main()
{
	
	list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2
	cout << "push_back()前mylist最后一个数据——" << mylist.back() << endl;
	mylist.push_back(1);
	cout << "push_back()后mylist最后一个数据——" << mylist.back() << endl;


	return 0;
}

pop_back()——尾删

删除list中最后一个元素

#include<iostream>
#include<list>
using namespace std;
int main()
{
	
	list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2
	cout << "pop_back()前mylist最后一个数据——" << mylist.back() << endl;
	mylist.pop_back();
	cout << "pop_back()后mylist最后一个数据——" << mylist.back() << endl;


	return 0;
}

clear()——清空

清空list中的有效元素

#include<iostream>
#include<list>
using namespace std;
int main()
{
	
	list<int>mylist = { 3, 2 };//代表列表里面有两个数第一个3,第二个2
	cout << "clear()前——检测链表是否为空mylist——" << mylist.empty() << endl;
	mylist.clear();
	cout << "clear()后——检测链表是否为空mylist——" << mylist.empty() << endl;


	return 0;
}




 

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

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

相关文章

基于SpringBoot+Vue高校宣讲会管理系统设计与实现

项目介绍&#xff1a; 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装高校宣讲会管理系统软件来发挥其高效地信息…

请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依 次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

2024年五大企业邮箱最新排名:价格与服务全面对比

在选择企业邮箱时&#xff0c;我们都需要对比企业邮箱价格和邮箱服务。国内五大企业邮箱有Zoho Mail、新浪、网易、腾讯、阿里&#xff0c;这些企业邮箱功能各有偏重点&#xff0c;价格也不一&#xff0c;到底排名如何&#xff1f;我们今天来进行个价格和服务的全面对比。 一、…

家政行业赋能链动:商业模式创新开启全新篇章

大家好&#xff0c;我是微三云周丽&#xff01; 在当今娱乐行业蓬勃发展的背景下&#xff0c;越来越多的年轻人对卫生打理的需求逐渐增加&#xff0c;同时也催生了家政行业的兴起。 然而&#xff0c;如何在激烈的竞争中脱颖而出&#xff0c;成为家政行业面临的重要挑战。本文…

【智能算法】火烈鸟搜索算法(FSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;W Zhiheng等人受到火烈鸟迁徙觅食行为启发&#xff0c;提出了火烈鸟搜索算法&#xff08;Flamingo Search Algorithm, FSA&#xff09;。 2.算法原理 2.1算法思想 FSA受到火烈鸟…

【unity】三维数学应用(计算线和面的交点)

【unity】三维数学应用&#xff08;计算线和面的交点&#xff09; 实现方法有多种&#xff0c;下面介绍一种简单的方法。利用一个点指向面上任意点的向量&#xff0c;到该面法线的投影长度相同的基本原理&#xff0c;结合相似三角形既可以求出交点。 原理 如下图 GD组成的线段…

win11 Windows ADK制作的win pe中没有manage-ade命令或命令无法正常工作解决办法

解决办法 不使用win pe&#xff0c;而是使用Windows安装程序。 将iso镜像烧录到u盘&#xff0c;然后从它引导。 按shift f10弹出cmd&#xff0c;里面存在manage-bde且正常工作。 其他 win pe找不到命令manage-ade 在win pe上使用manage-ade需要一个包 a&#xff0c;adk制作…

计算机网络 备查

OSI 七层模型 七层模型协议各层实现的功能 简要 详细 TCP/IP协议 组成 1.传输层协议 TCP 2.网络层协议 IP 协议数据单元&#xff08;PDU&#xff09;和 封装 数据收发过程 数据发送过程 1. 2.终端用户生成数据 3.数据被分段&#xff0c;并加上TCP头 4.网络层添加IP地址信息…

练习题(2024/4/29)

在深度优先遍历中&#xff1a;有三个顺序&#xff0c;前中后序遍历 这里前中后&#xff0c;其实指的就是中间节点的遍历顺序&#xff0c;只要记住 前中后序指的就是中间节点的位置就可以了。 如图 1二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前…

Vue3+Nuxt3 从0到1搭建官网项目(SEO搜索、中英文切换、图片懒加载)

Vue2Nuxt2 从 0 到1 搭建官网~ 想开发一个官网&#xff0c;并且支持SEO搜索&#xff0c;当然离不开我们的 Nuxt &#xff0c;Nuxt2 我们刚刚可以熟练运用&#xff0c;现在有出现了Nuxt3&#xff0c;那通过本篇文章让我们一起了解一下。 安装 Nuxt3 // npx nuxilatest init &…

乐观锁悲观锁

视频&#xff1a;什么是乐观锁&#xff1f;什么是悲观锁&#xff1f;_哔哩哔哩_bilibili

Leetcode—2739. 总行驶距离【简单】

2024每日刷题&#xff08;121&#xff09; Leetcode—2739. 总行驶距离 实现代码 class Solution { public:int distanceTraveled(int mainTank, int additionalTank) {int consume 0;int ans 0;while(mainTank ! 0) {mainTank--;consume;if(consume 5 && additio…

数据分析案例-全球表面温度数据可视化与统计分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

基于SpringBoot+Vue高校汉服租赁网站的设计与实现

项目介绍&#xff1a; 高校汉服租赁网站管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、交流论坛管理、公告资讯管理、汉服信息管理、汉服收藏管理、汉服评价管理、汉服租赁管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库&#xff0c…

03 后端入参校验:自定义注解实现

03 后端入参校验&#xff1a;自定义注解实现 一、前言二、实现1、新建Spring Boot项目2、引入依赖3、新建注解类4、新建校验器5、全局异常处理器6、编写Controller7、新建实体类8、启动并测试 一、前言 在 Java 后端开发中&#xff0c;为了实现入参校验&#xff0c;常常会使用…

外径合格与否对线缆品质有着直接影响 应用测径仪很重要

关键词&#xff1a;测径仪,线缆测径仪,电缆测径仪,外径测量仪,线缆,电缆 电缆尺寸不合格的危害 1、传输性能下降&#xff1a;尺寸不合格会导致电线电缆的参数不符合设计要求&#xff0c;从而影响传输的速率和稳定性&#xff0c;从而导致数据传输缓慢&#xff0c;影响用户的使用…

PC 自动化测试入门 - pywinauto 上篇:初识

文章目录 前言PC 自动化测试 是什么&#xff1f;常用 PC 自动化测试工具pywinauto 是什么&#xff1f;Windows上支持的可访问性技术列表 操作记事本自动写入问题app Application(backend"uia").start("notepad.exe") 无法正常启动组件选择器和 print_cont…

使用这 7 个绩效评估模板简化您的员工评估

绩效评估受到了不好的评价&#xff1b;员工发现它们压力很大&#xff0c;而管理者则发现它们很耗时。 但随着绩效管理成为 2024 年人力资源的首要任务&#xff0c;也许是时候重新思考了。绩效评估模板可以帮助减轻评估过程的麻烦。通过为管理者提供一种简单、标准化的方法来评…

CVE-2024-3116 PgAdmin8.4代码执行漏洞

前言 在有闲情的时候&#xff0c;看了一下最近的CVE&#xff0c;看到了pgAdmin4在8.4版本之前存在着一个远程代码执行漏洞&#xff0c;因为pgAdmin4在github是开源的&#xff0c;网上也没有看到分析文章&#xff0c;于是就把源码下载了下来&#xff0c;根据漏洞的描述大致的分…

Linux服务器终端软件termius以及Xshell + WinSCP组合

1. termius 官网地址&#xff1a;https://termius.com/ Termius是一个跨平台的SSH客户端&#xff0c;它提供了一个便捷的方式来远程连接和管理服务器、虚拟机和网络设备。以下是Termius的一些特点和功能&#xff1a; 跨平台支持&#xff1a;Termius可在多个操作系统上运行&…