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

蓝桥杯基础知识8 list

蓝桥杯基础知识8 list

01 list 的定义和结构

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

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

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

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

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

list容器的特点包括:

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

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

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

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

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

创建一个 list容器 myList,使用push_back() 和 push_front() 函数分别在链表 和 头部插入元素。

list 是双向链表,插入和删除操作的时间复杂度是常量时间 O(1),访问和查找操作的时间复杂度是线性时间O(n),n为链表大小。

如需进行频繁访问操作,推荐 vector 或 deque。

02 list的常用函数

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.erase():从链表中移除指定位置的一个或多个元素。

#include<iostream>
#include<list>
#include<algorithm>
using namespace std;int main(){// 创建一个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 << '\n';	// 1 2 3 4 5 // 将myList中的元素反转reverse(myList.begin(), myList.end());for(const auto &i : myList)cout << i << ' ';cout << '\n';	// 5 4 3 2 1// 在第一个元素的后一个位置加上元素 0myList.insert(++ myList.begin(), 0);for(const auto &i : myList)cout << i << ' ';cout << '\n';// 删掉4到2位置的元素,左闭右开  5 0 4 3 2 1//								 i-> j     j<-i      myList.erase(++ ++myList.begin(), --myList.end());// 输出myList的大小	3cout << "链表大小:" << myList.size() << '\n';// 从头到尾输出myList中元素	5 0 1 for(const auto &i : myList)cout << i << ' ';cout << '\n';return 0;
}

可结合学习:

C++ STL标准库: std::list使用介绍、用法详解-CSDN博客

相关文章:

蓝桥杯基础知识8 list

蓝桥杯基础知识8 list 01 list 的定义和结构 lits使用频率较低&#xff0c;是一种双向链表容器&#xff0c;是标准模板库&#xff08;STL&#xff09;提供的一种序列容器&#xff0c;lsit容器以节点&#xff08;node&#xff09;的形式存储元素&#xff0c;使用指针将这些节点链…...

【DDD】学习笔记-理解领域模型

Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视&#xff0c;是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性&#xff0c;例如他在书中总结了模型在领域驱动设计中的作用包括&#xff1a; 模型和设计的核心互相影响模型是团队所有成…...

v-if 和v-show 的区别

第074个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使用&#xff0c;computed&a…...

LabVIEW网络测控系统

LabVIEW网络测控系统 介绍了基于LabVIEW的网络测控系统的开发与应用&#xff0c;通过网络技术实现了远程的数据采集、监控和控制。系统采用LabVIEW软件与网络通信技术相结合&#xff0c;提高了系统的灵活性和扩展性&#xff0c;适用于各种工业和科研领域的远程测控需求。 随着…...

攻防世界 CTF Web方向 引导模式-难度1 —— 11-20题 wp精讲

PHP2 题目描述: 暂无 根据dirsearch的结果&#xff0c;只有index.php存在&#xff0c;里面也什么都没有 index.phps存在源码泄露&#xff0c;访问index.phps 由获取的代码可知&#xff0c;需要url解码(urldecode )后验证id为admin则通过 网页工具不能直接对字母进行url编码 …...

华为Eth-Trunk级联堆叠接入IPTV网络部署案例

Eth-Trunk级联堆叠接入IPTV网络部署案例 组网图形 图2 Eth-Trunk级联堆叠IPTV基本组网图 方案简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 方案简介 随着IPTV业务的迅速发展&#xff0c;IPTV平台承载的用户也越来越多&#xff0c;用户对IPTV直播业务的可靠性…...

idea: 无法创建Java Class文件(SpringBoot)已解决

第一&#xff1a;点击file-->project Sructure... 第二步&#xff1a;点击Moudules 选择自己需要创建java的文件夹&#xff08;我这里选择的是main&#xff09;右键点击Sources&#xff0c;然后点击OK即可 然后就可以创建java类了...

ChinaXiv:中科院科技论文预发布平台

文章目录 Main彩蛋 Main 主页&#xff1a;https://chinaxiv.org/home.htm 彩蛋...

【人工智能】Fine-tuning 微调:解析深度学习中的利器(7)

在深度学习领域&#xff0c;Fine-tuning 微调是一项重要而强大的技术&#xff0c;它为我们提供了在特定任务上充分利用预训练模型的途径。本文将深入讨论 Fine-tuning 的定义、原理、实际操作以及其在不同场景中的应用&#xff0c;最后简要探讨Fine-tuning 的整体架构。 1. Fi…...

黄金交易策略(Nerve Nnife):大K线对技术指标的影响

我们使用heiken ashi smoothed来做敏感指标&#xff08;大趋势借助其转向趋势预判&#xff0c;但不是马上转变&#xff09;&#xff0c;has默认使用6根k线的移动平均值来做计算的。若在6根k线规范内有一个突变的行情&#xff08;k线很长&#xff09;&#xff0c;那么整个行情的…...

django中实现数据迁移

在Django中&#xff0c;数据迁移&#xff08;data migrations&#xff09;通常指的是将模型&#xff08;models&#xff09;中的数据从一个状态迁移到另一个状态。这可以涉及很多操作&#xff0c;比如添加新字段、删除字段、更新字段的数据类型&#xff0c;或者更改表之间的关系…...

全新抖音快手小红书去水印系统网站源码 | 支持几十种平台

全新抖音快手小红书去水印系统网站源码 | 支持几十种平台...

ChatGPT炸裂了

优质内容&#xff1a;ChatGPT太炸裂了 hello&#xff0c;我是小索奇 很多人在使用ChatGPT时遇到了两个主要问题&#xff0c;导致他们觉得这个工具并没有带来太多实际价值。首先&#xff0c;许多人发现ChatGPT的回答缺乏深度&#xff0c;缺乏实用性。其次&#xff0c;一些人在使…...

小白代码审计入门

最近小白一直在学习代码审计,对于我这个没有代码审计的菜鸟来说确实是一件无比艰难的事情。但是着恰恰应了一句老话:万事开头难。但是小白我会坚持下去。何况现在已经喜欢上了代码审计,下面呢小白就说一下appcms后台模板Getshell以及读取任意文件,影响的版本是2.0.101版本。…...

[开源]GPT Boss – 用图形化的方式部署您的私人GPT镜像网站

在这个以数据和智能为核心的时代&#xff0c;掌握最新的技术趋势是每个企业和个人都需要做到的。这就是GPT Boss存在的意义&#xff1a;一个基于OpenAI技术的一站式GPT应用解决方案。 自2022年起&#xff0c;GPT Boss团队便投身于人工智能领域&#xff0c;将OpenAI的GPT模型带给…...

FastAPI使用ORJSONResponse作为默认的响应类型

FastAPI默认使用Python的标准库来做json解析&#xff0c;如果换成rust编写的orjson&#xff0c;速度上会快一些 1. 安装依赖 pip install orjson 2. 设置为默认响应类型 from fastapi.responses import ORJSONResponseapp FastAPI(titlexxx, default_response_classORJSON…...

C++初阶:适合新手的手撕string类(模拟实现string类)

上次讲了常用的接口&#xff1a;C初阶&#xff1a;初识STL、String类接口详细讲解&#xff08;万字解析&#xff09; 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数&#xff08;constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…...

uniapp canvas游标卡尺效果

效果 根据公司业务仿照写的效果。原项目从微信小程序转uniapp,未测试该效果在android端效果。 uniapp直接使用canvas不可做子组件,否则无效果显示,其次显示时要考虑页面渲染超时的问题。 如效果所见,可以设置取值精度。 gitee地址:project_practice: 项目练习 - Gitee.…...

【django】建立python虚拟环境-20240205

1.确保已经安装pip3 install venv 2.新建虚拟环境 python -m venv myenv 3.安装虚拟环境的依赖包 pip install … 4.激活虚拟环境 cd myenv cd Scripts activate 激活activate.bat并进入虚拟环境 进入虚拟环境后&#xff0c;命令行前面显示&#xff08;myenv&#xff0…...

070:vue+cesium: 利用canvas设置线性渐变色材质

第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共104行)专栏目标示例效果 配置方式 1)查看基础…...

终极PDF Arranger常见问题FAQ:解决用户最关心的30个疑问

终极PDF Arranger常见问题FAQ&#xff1a;解决用户最关心的30个疑问 【免费下载链接】pdfarranger Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive gra…...

4个关键步骤:开源散热控制解决Dell G15温度难题

4个关键步骤&#xff1a;开源散热控制解决Dell G15温度难题 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 在游戏本使用过程中&#xff0c;散热控制往往是影响…...

Kangaroo运动控制器Packet Serial通信协议详解

1. Kangaroo运动控制器底层通信技术解析 Kangaroo运动控制器是由RoboClaw系列厂商推出的专用闭环步进/伺服电机驱动模块&#xff0c;其核心价值在于将复杂的PID调节、电流环控制、位置反馈处理等算法固化于硬件中&#xff0c;使上位机仅需通过精简的串行协议即可完成高精度运动…...

5分钟快速部署!终极开源邮件营销平台BillionMail完全指南 [特殊字符]

5分钟快速部署&#xff01;终极开源邮件营销平台BillionMail完全指南 &#x1f680; 【免费下载链接】BillionMail Billion Mail is a future open-source email marketing platform designed to help businesses and individuals manage their email campaigns with ease 项…...

YOLOv8特征可视化实战:如何用3种合并模式优化模型调试(附完整代码)

YOLOv8特征可视化实战&#xff1a;3种合并模式优化模型调试的工程实践 在计算机视觉领域&#xff0c;理解神经网络内部工作机制一直是提升模型性能的关键。YOLOv8作为当前最先进的实时目标检测框架之一&#xff0c;其内部特征层的可视化分析能够为模型调试提供直观依据。然而&a…...

布隆过滤器与哈希索引:两级验证模型

在高并发、大数据量的系统中&#xff0c;快速判断一个元素是否“已经存在”是一项基础而关键的能力。无论是防止重复提交、抵御缓存穿透&#xff0c;还是实现分布式去重&#xff0c;都需要一种高效的存在性检查机制。实践中&#xff0c;布隆过滤器&#xff08;Bloom Filter&…...

Treap(树堆)实战:从原理到代码实现与性能对比

1. 什么是Treap&#xff1a;当二叉搜索树遇上堆 第一次听说Treap这个数据结构时&#xff0c;我正被红黑树的旋转操作折磨得焦头烂额。直到某天在算法竞赛讨论区看到有人用20行代码实现了一个"魔法平衡树"&#xff0c;才真正打开了新世界的大门。Treap这个名字本身就揭…...

3分钟上手:ControlNet-v1-1_fp16_safetensors让你的AI绘画更精准可控 [特殊字符]

3分钟上手&#xff1a;ControlNet-v1-1_fp16_safetensors让你的AI绘画更精准可控 &#x1f3a8; 【免费下载链接】ControlNet-v1-1_fp16_safetensors 项目地址: https://ai.gitcode.com/hf_mirrors/comfyanonymous/ControlNet-v1-1_fp16_safetensors ControlNet-v1-1_f…...

Knowledge Repo转换器终极指南:10个技巧实现Jupyter、R Markdown等多格式完美转换

Knowledge Repo转换器终极指南&#xff1a;10个技巧实现Jupyter、R Markdown等多格式完美转换 【免费下载链接】knowledge-repo A next-generation curated knowledge sharing platform for data scientists and other technical professions. 项目地址: https://gitcode.com…...

嵌入式系统模块化设计:内聚与耦合实战指南

1. 嵌入式模块设计的核心原则在嵌入式系统开发中&#xff0c;模块化设计质量直接影响着整个系统的生命周期成本。我经历过多个嵌入式项目后发现&#xff0c;那些后期维护成本高昂的系统&#xff0c;往往都存在模块边界模糊、依赖混乱的问题。模块化不是简单的代码分割&#xff…...