C++STL的list(超详解)

文章目录

  • 前言
    • 构造函数
    • capacity
    • list的访问
    • insert
    • swap
    • sort

前言

在这里插入图片描述
看一下list, 在任意位置可以进行O(1)插入删除的操作。
它怎么实现这个东西?它其实就是一个带头双向循环链表。

#成员函数

构造函数

在这里插入图片描述
这里面的构造函数学完string和vector之后已经相当熟悉了。

capacity

在这里插入图片描述
它没有resize和reserve,为什么?
它没有扩容这个玩法,它是链表。

list的访问

链表和vector、string的最大区别是什么?
它不支持【】,不能像数组一样访问。

list严格来说,要遍历和修改它,就只有一种方式,迭代器。
在这里插入图片描述

insert

在这里插入图片描述

list和vector一样,没有提供它自己的find
在这里插入图片描述

swap

把链表的头指针机型交换就可以了。

sort

sort很值得仔细讲一下

为什么算法库提供了一个sort,list它还要自己提供一个sort?
最主要的是算法库提供的sort,list用不了。

看算法库里面的sort做了什么事情。
在这里插入图片描述
这块减的时候出问题了。
算法库里面的sort是用快排实现的,快排要解决最坏的问题,就要用分数取中。
有左边和右边,直接算出中间的位置进行访问,链表不行。

在这里插入图片描述
迭代器的类型跟什么有关系呢?
跟容器的底层结果有关。

从功能上来说,迭代器的类型分三种。

1.单向迭代器,只能++ 不能- - ,比如单链表
2.双向迭代器,可以++, - -,比如双向链表。
3.随机迭代器,可以++,- -,+,-,比如vector, string.

要求双向可以传随机。要求单向可以传双向。
你可以认为双向是一个特殊的单向,随机也是一个特殊的单向。

基于上述的原因,也就明白list为什么有一个单独的sort.
不过链表在90%的情况下都不会用这个sort,因为它的性能不行。

list提供的sort底层用的是归并排序,归并排序本身效率也不错,但是由于种种原因。
给大家测试一下。

list当中同样的数据,一个放到直接用list提供的sort进行排序,
另一个拷贝到vector然后进行排序,最后拷贝回去。
比较一下这两者之间的效率。
在这里插入图片描述

差距还是很大的。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型报告:2023大模型可信赖研究报告

今天分享的AI系列深度研究报告:《AI大模型报告:2023大模型可信赖研究报告》。 (报告出品方:中国信通院) 报告共计:48页 大模型发展现状 大模型驱动新一轮科技革命 近十余年间,人工智能技术泛…

源码级详解Spring的三级缓存,循环依赖的处理流程

一.什么是三级缓存 1.一级缓存:存放已经初始化完成的Bean 2.二级缓存:存放半成品Bean,既实例化完成未初始化的Bean。 3.三级缓存:存放bean工厂 二.为什么是三级缓存 一级缓存是必须的,这个我们没有什么疑问。那为…

第6章:知识建模:概述、方法、实例

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

后缀数组模板

详细理解后缀数组求sa数组的函数,该函数可以看为主要分为三个部分,第一个部分是预处理;第二个部分是进行基数排序,首先根据第二关键词排序,然后根据第一关键字排序;第三个部分是根据排序后的结果重新为每个…

等保二级和三级的区别

等保二级和三级定级标准有什么区别?定级原则和方法介绍 网络安全等级保护,简称等保,是我国为了保障信息系统的安全运行,防止信息泄露、篡改、破坏等威胁,制定的一套信息安全管理制度。根据《信息安全技术网络安全等级保…

6.21二叉搜索树的最近公共祖先(L235-M)

算法: 可以和上一题一样做,但是最好还是要用上二叉搜索树的特性 遍历顺序无所谓,因为中不用写逻辑代码。 假如p3,q5 若当前遍历节点(比如6)比p和q都大,说明p和q一定在当前节点的左子树里面 …

Python数值类型(整形、浮点型和复数)及其用法

数值类型是计算机程序最常用的一种类型,既可用于记录各种游戏的分数、游戏角色的生命值、伤害值等,也可记录各种物品的价格、数量等,Python 提供了对各种数值类型的支持,如支持整型、浮点型和复数。 Python整型 Python 3 的整型…

Intel® Enclave Operation(三)

文章目录 前言一、Constructing an Enclave1.1 ECREATE1.2 EADD and EEXTEND Interaction1.3 EINIT Interaction1.4 Intel SGX Launch Control Configuration 二、Enclave Entry and Exiting2.1 Controlled Entry and Exit2.2 Asynchronous Enclave Exit (AEX)2.3 Resuming Exe…

web服务器之——建立两个基于ip地址访问的网站

目录 准备工作:web服务器搭建 第一步:挂载 第二步:编辑配置文件 第三步:安装软件包 第四步:启动httpd 查看配置文件: 第五步:设置防火墙状态: 重启服务: 查看状态&#xff1…

自己开发App,如何能兼顾效率与体验?

今天来聊聊一个现实但不简单的问题:如何能够做到自己开发App。 首先,在搜索引擎搜索“自己开发App”,会冒出一大堆类“手把手”的内容,超级详细、稍微浏览一些内容的引言部分,乍一看好像还挺合理,但点击进…

多地远程视频监控,如何集中连接与管理?

如今,远程视频监控已广泛应用于商超零售、酒店、工厂工地、IT机房、农业生产、医疗保健、公共安全等多种场景。其中,网络通信技术是远程监控技术中最为关键的技术,远程监控数字化应用的增长对广域网等基础IT建设提出更高的需求。 以广东某连锁…

python实战教学之python版“张万森,好久不见”

前言 WINTER IS COMING 最近《一闪一闪亮星星》的电影在火热预售中,家人们抢到票了嘛,前两天小编写了一篇“张万森,下雪了”的文章后,收到了不少小伙伴的反馈:“代码的运行结果只有文字,没有雪花啊”&#…

气温波动 C语言xdoj45

问题描述 最近一段时间气温波动较大。已知连续若干天的气温,请给出这几天气温的最大波动值是多少,即在这几天中某天气温与前一天气温之差的绝对值最大是多少。 输入说明 输入数据分为两行。 第一行包含了一个整数n,表示给出了连续n天…

JNPF低代码——全源码、免费部署的开发框架

低代码平台的概念很火爆,产品也是鱼龙混杂。 对于开发人员来说,在使用绝大部分低代码平台的时候都会遇到一个致命的问题:我在上面做的项目无法得到源码,完全黑盒。一旦我的需求平台满足不了,那就是无解。 与其他平台的…

便签电脑版下载教程,电脑便签用哪个

现在大家所熟知的电脑便签软件通常以电脑软件为主,过去那种贴满五颜六色的,几百张成一叠的桌面便利贴,可以实现随处粘贴,现在几乎已经被淘汰了,取而代之的是科技化的电脑便签软件。 在查找电脑便签软件时,…

helpdesk的工作流程是什么?

helpdes在IT部门中是一个非常重要的部门,负责为用户提供技术支持和问题解决方案。为了有效地提供这些服务,helpdesk需要建立一个清晰而高效的工作流程。本文将介绍helpdesk工作的典型流程,并探讨每个阶段的重要性。 1、用户报告问题 通常&…

RCG Self-conditioned Image Generation via Generating Representations

RCG: Self-conditioned Image Generation via Generating Representations TL; DR:将图像的无监督表征作为(自)条件(而非是将文本 prompt 作为条件),生成与原图语义内容一致的多样且高质量结果。视觉训练能…

Android :Paging (分页)加载数据-简单应用

1.Paging介绍: 安卓Paging是一种分页加载数据的方法,它基于无限滚动模式而设计,可以帮助应用更高效地利用网络带宽和系统资源。Paging库可以加载和显示来自本地存储或网络中更大的数据集中的数据页面,适用于以列表的形式加载大量…

VSCode配置记录

1. 修改代码背景颜色 1)Shift Command P,搜索框输入:settings.json 2)输入配置 {"workbench.colorCustomizations": {"editor.lineHighlightBackground": "#86e9e93d", # 修改鼠标所在行背景色…

自动化测试 —— Web自动化三大报错

Web自动化三大报错有哪些呢?接下来给大家讲讲。 Web自动化三大报错(Exception) 1. Exception1:no such element(没有在页面上找到这个元素) reason1:元素延迟加载了 solution: …