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

STL之list

目录

list定义和结构

list容器模板接受两个参数:

list容器的特点

双向性

动态大小

不连续存储

实例

代码输出

需要注意的点

list常用函数

代码示例


list定义和结构

list的使用频率不高,在做题时极少遇到需要使用list的情景。

list是一种双向链表容器,他是标准模板库(STL)提供的一种序列容器。list容器以节点(node)的形式存储元素,并使用指针将这些节点链接在一起,形成一个链表结构。

list容器的定义和结构如下:

template<class T,class Allocator = std::allocator<T>>
class list;

list容器模板接受两个参数:

1.T:指定容器中存储的元素类型。

2.Allocator:可选,指定用于分配内存的分配器类型,默认为std::allocator<T>。

list容器的特点

双向性

每个节点都包含指向前一个节点和后一个节点的指针,因此可以在常数时间内在链表中的任意位置进行插入、删除和访问操作。

动态大小

链表的大小可以根据需要动态扩展或收缩,不需要预先指定容器的大小。

不连续存储

链表的节点可以在内存中的任意位置分布,不要求连续存储,因此插入和删除操作不会导致元素的移动。

list容器提供了一系列成员函数和迭代器来操作和访问链表中的元素,包括插入、删除、访问、反转等操作。可以使用迭代器来遍历链表中的元素。

实例

#include<iostream>
#include<list>
using namespace std;
int main()
{list<int>myList;//在链表尾部插入元素myList.push_back(1);myList.push_back(2);myList.push_back(3);//在链表头部插入元素myList.push_front(0);//遍历链表并输出元素for (int num : myList){cout << num << ' ';}cout << endl;
}

代码输出

需要注意的点

由于list是双向链表,因此插入和删除操作的时间复杂度是常量时间O(1),但访问和查找操作的时间复杂度为O(n),其中n是链表的大小。因此,如果需要频繁进行随机访问操作,可能更适合使用支持随机访问的容器,如vector或deque。

list常用函数

1、push_back():将元素插入到链表的末尾

2、push_front():将元素插入到链表的开头

3、pop_back():移除链表末尾的元素

4、pop_front():移除链表开头的元素

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

6、empty():检查链表是否为空

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

8、front():返回链表中第一个元素的引用

9、back():返回链表中最后一个元素的引用

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

11、end():返回指向链表最后一个元素的迭代器

12、insert():在指定位置之前插入一个或多个元素

13、erease():从链表中移除指定位置的一个或多个元素

代码示例

#include<iostream>
#include<list>
using namespace std;
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//创建一个list<int>对象myListlist<int>myList;//向myList尾部添加元素for (int i = 1; i <= 5; i++){myList.push_back(i);}//从头到尾输出myList中的元素for (const auto& i : myList){cout << i << ' ';}cout << endl;//将myList中的元素反转reverse(myList.begin(), myList.end());for (const auto& i : myList){cout << i << ' ';}cout << endl;//在第一个元素的后一个位置加上元素0myList.insert(++myList.begin(), 0);for (const auto& i : myList){cout << i << ' ';}cout << endl;myList.erase(++++myList.begin(), --myList.end());cout << "链表的大小为:" << myList.size() << endl;for(const auto & i:myList){cout << i << ' ';}return 0;
}

输出结果:

相关文章:

STL之list

目录 list定义和结构 list容器模板接受两个参数&#xff1a; list容器的特点 双向性 动态大小 不连续存储 实例 代码输出 需要注意的点 list常用函数 代码示例 list定义和结构 list的使用频率不高&#xff0c;在做题时极少遇到需要使用list的情景。 list是一种双向…...

【C++】C++11中的常见语法(上)

C11 一、C11简介二、统一的列表初始化1.&#xff5b;&#xff5d;初始化2. std::initializer_list 三、声明1. auto2. decltype3. nullptr 四、右值引用和移动语义1. 左值引用和右值引用2. 左值引用与右值引用比较3. 右值引用使用场景和意义4. 右值引用引用左值及其一些更深入的…...

Unity 踩坑记录 AnyState 切换动画执行两次

AnySate 切换动画 Can Transition To Self 将这个勾选去掉&#xff01;&#xff01;&#xff01;...

使用脚本把springboot程序部署到k8s上

一般我们部署写4个文件就行了 首先分别写 Dockerfile1package.sh2build.shdocker_push.sh Dockerfile # 基于jdk1.8 FROM openjdk:8-jdk-alpine RUN echo "Asia/Shanghai" > /etc/timezone RUN mkdir /app WORKDIR /appCOPY ./monitor-flink-1.0.jar /appEXPO…...

使用valgrind 分析缓存命中

使用valgrind 分析缓存命中 char transpose_submit_desc[] "Transpose submission"; void transpose_submit(int M, int N, int A[N][M], int B[M][N]) { int i,j,tmp;int bsize 8;unsigned long long addrA;unsigned long long addrB;unsigned long long setin…...

leetcode-二进制求和

67. 二进制求和 class Solution:def addBinary(self, a: str, b: str) -> str:result carry 0for i in range(max(len(a), len(b))):a_bit a[-(i1)] if i < len(a) else 0b_bit b[-(i1)] if i < len(b) else 0sum_bit int(a_bit) int(b_bit) carryresult str…...

数据采集卡:16通道16位250KHz AD,支持单点采集,程控增益

概述 USB-XM1603是一款性价比极高的多功能通用A/D板&#xff0c;经过精心设计&#xff0c;采用USB2.0总线支持热插拔&#xff0c;即插即用&#xff0c;无需地址跳线。适合测量变送器输出、直流电压等场合的测量应用。USB-XM1603具有16路单端16位程控增益模拟输入、4路16位模拟…...

物联网通讯协议NB-lot和LoRa差异分析

像把大象装冰箱一样&#xff0c;物联网&#xff0c;万物互联也是要分步骤的。 一、感知层(信息获取层)&#xff0c;即利用各种传感器等设备随时随地获取物体的信息; 二、网络层(信息传输层)&#xff0c;通过各种电信网络与互联网的融合&#xff0c;将物体的信息实时准确地传递…...

回归预测 | Matlab基于SMA+WOA+SFO-LSSVM多输入单输出回归预测

回归预测 | Matlab基于SMAWOASFO-LSSVM多输入单输出回归预测 目录 回归预测 | Matlab基于SMAWOASFO-LSSVM多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SMAWOASFO-LSSVM回归预测 基于黏菌算法鲸鱼算法向日葵算法优化LSSVM回归预测 其中包含三种改进…...

Redis内存策略:「过期Key删除策略」+ 「内存淘汰策略」

Redis之所以性能强&#xff0c;最主要的原因就是基于内存存储&#xff0c;然而单节点的Redis其内存大小不宜过大&#xff0c;否则会影响持久化或主从同步的性能。 Redis内存满了&#xff0c;会发生什么&#xff1f; 在Redis的运行内存达到了某个阈值&#xff0c;就会触发内存…...

el-table 个体行绑定点击事件时 表格中有el-radio和el-checkbox 点击触发两次事件处理方法

问题描述 在element的table中 使用radio或者checkbox 的单击事件,会导致radio或者checkbox的单击事件触发两次 解决办法 <el-table :data"tableData" style"width: 100%" max-height"500" :header-cell-style"tableHeaderCellStyle&q…...

CentOs 环境下使用 Docker 部署 Ruoyi-Vue

CentOs 环境下使用 Docker 部署 Ruoyi-Vue RuoYi-Vue 项目下载地址 RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分离权限管理系统&#xff0c;同时提供了 Vue3 的版本 (gitee.com) Docker 部…...

axios 后端不配和添加api

export function returnBaseUrl(proxyUrl, url) {// console.log(process.env, "process.env3333");let returnBaseUrl "";if (process.env.NODE_ENV "production") {// // test 环境// if (process.env.VUE_APP_ENV "test") {// …...

力扣LCR 166. 珠宝的最高价值(java 动态规划)

Problem: LCR 166. 珠宝的最高价值 文章目录 解题思路思路解题方法复杂度Code 解题思路 思路 改题目与本站64题实质上是一样的&#xff0c;该题目在64题的基础上将求取最小路径和改成了求取最大路径和。具体实现思路如下&#xff1a; 1.定义一个int类型的二维数组dp大小为给定…...

【Python基础】一文搞懂:Python 中 Excel 文件的写入与读取

文章目录 1 引言2 使用 openpyxl2.1 安装 openpyxl2.2 写入 Excel 文件2.3 读取 Excel 文件 3 使用 pandas3.1 安装 pandas 和 openpyxl3.2 写入 Excel 文件3.3 读取 Excel 文件 4 实例演示4.1 安装所需库4.2 封装为excel_example.py脚本文件 5 注意事项6 总结 1 引言 在现代办…...

二叉树题目:完全二叉树插入器

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;完全二叉树插入器 出处&#xff1a;919. 完全二叉树插入器 难度 6 级 题目描述 要求 完全二叉树是每一层&#xff08;除最后一层外&#xff09;都…...

用MATLAB求最短路径(graphshortestpath)和求最小生成树(minspantree),代码演示

求最短路径&#xff08;graphshortestpath&#xff09;&#xff0c;求最小生成树&#xff08;minspantree&#xff09; 文章目录 求最短路径&#xff08;graphshortestpath&#xff09;&#xff0c;求最小生成树&#xff08;minspantree&#xff09;1、最短路径问题2、最小生成…...

用win系统搭建Minecraft世界服务器,MC开服教程,小白开服教程

雨云VPS用Windows系统搭建我的世界世界服务器&#xff0c;Minecraft开服教程&#xff0c;小白开服教程&#xff0c;MC 1.19.4版本服务器搭建教程。 此教程使用 Mohist 1.19.4 服务端&#xff0c;此服务端支持Forge模组和Bukkit/Spigot/Paper插件&#xff0c;如果需要开其他服务…...

MacOS安装Miniforge、Tensorflow、Jupyter Lab等(2024年最新)

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…...

iOS 应用上架指南:资料填写及提交审核

摘要 本文提供了iOS新站上架资料填写及提交审核的详细指南&#xff0c;包括创建应用、资料填写-综合、资料填写-IOS App和提交审核等步骤。通过本指南&#xff0c;您将了解到如何填写正确的资料&#xff0c;并顺利通过苹果公司的审核。 引言 在开发iOS应用后&#xff0c;将其…...

5分钟免费制作专业AI翻唱:AICoverGen完整指南

5分钟免费制作专业AI翻唱&#xff1a;AICoverGen完整指南 【免费下载链接】AICoverGen A WebUI to create song covers with any RVC v2 trained AI voice from YouTube videos or audio files. 项目地址: https://gitcode.com/gh_mirrors/ai/AICoverGen 想让AI帮你翻唱…...

3分钟掌握跨平台模组下载神器:WorkshopDL全攻略

3分钟掌握跨平台模组下载神器&#xff1a;WorkshopDL全攻略 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic Games或GOG平台的游戏无法使用Steam创意工坊模组而烦恼吗…...

【稀缺首发】Midjourney达达主义风格提示工程白皮书:含89组对比实验数据+12个独家种子编号(限前500名下载)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;达达主义在AI图像生成中的哲学解构 达达主义并非技术流派&#xff0c;而是一场对逻辑、秩序与意义权威的激进质疑——这一精神正悄然渗透至当代AI图像生成的核心机制中。当Stable Diffusion接收“一只会…...

三维重建实时映射技术在智慧水利中的核心应用

三维重建实时映射技术在智慧水利中的核心应用在国家大力推进数字孪生水利建设、实现水安全精准保障的背景下&#xff0c;智慧水利已从传统监测、调度向全域感知、智能预判、协同处置、一屏统管升级。智慧水利的核心目标&#xff0c;是实现对江河湖库、灌区、泵站、堤坝、闸站等…...

CompressO:终极跨平台视频图片压缩神器,轻松解决存储难题

CompressO&#xff1a;终极跨平台视频图片压缩神器&#xff0c;轻松解决存储难题 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/…...

VT.ai:开发者AI工具集实战指南,提升编码效率与调试体验

1. 项目概述&#xff1a;一个面向开发者的AI工具集最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“vinhnx/VT.ai”。乍一看这个标题&#xff0c;可能有点摸不着头脑&#xff0c;但点进去研究一番&#xff0c;你会发现这其实是一个开发者为自己、也为社区打造的一个AI工具…...

数据分析师能力展示:从项目构建到报告呈现的完整指南

1. 项目概述&#xff1a;一个数据分析师的能力展示平台最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“dataanalyst-showcase”。光看名字&#xff0c;你可能会觉得这又是一个数据科学项目合集&#xff0c;但点进去仔细研究后&#xff0c;我发现它的定位非常精准——它不…...

开源容器镜像仓库cc-hub:从协议兼容到生产部署的完整实践指南

1. 项目概述&#xff1a;一个面向容器化应用的开源镜像仓库最近在整理团队内部的容器镜像管理方案时&#xff0c;我重新审视了开源镜像仓库这个领域。虽然市面上有 Harbor、Docker Registry 等成熟方案&#xff0c;但总有一些场景&#xff0c;比如轻量级内网部署、特定架构&…...

5分钟掌握浏览器串口调试:提升嵌入式开发效率300%的终极指南

5分钟掌握浏览器串口调试&#xff1a;提升嵌入式开发效率300%的终极指南 【免费下载链接】SerialAssistant A serial port assistant that can be used directly in the browser. 项目地址: https://gitcode.com/gh_mirrors/se/SerialAssistant 你是否还在为串口调试工具…...

像素风格技能图标自动生成:Python+Pillow实现模板化设计

1. 项目概述与核心价值最近在和一些做独立开发者和内容创作者的朋友聊天时&#xff0c;发现一个普遍痛点&#xff1a;大家手头都有不少好想法&#xff0c;但一到具体执行&#xff0c;尤其是需要制作宣传素材时&#xff0c;就卡住了。比如&#xff0c;想给自己的新App做个宣传图…...