当前位置: 首页 > 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)查看基础…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...