list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。
图 1 展示了 list 双向链表容器是如何存储元素的。


图 1 list 双向链表容器的存储结构示意图

可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了 2 个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为 null,因为它前面没有元素;同样,尾部元素的后向指针也总为 null。

基于这样的存储结构,list 容器具有一些其它容器(array、vector 和 deque)所不具备的优势,即它可以在序列已知的任何位置快速插入或删除元素(时间复杂度为O(1))。并且在 list 容器中移动元素,也比其它容器的效率高。

使用 list 容器的缺点是,它不能像 array 和 vector 那样,通过位置直接访问元素。举个例子,如果要访问 list 容器中的第 6 个元素,它不支持容器对象名[6]这种语法格式,正确的做法是从容器中第一个元素或最后一个元素开始遍历容器,直到找到该位置。

C++(STL):12--- list基本介绍相关推荐

  1. [C++ STL] 各容器简单介绍

    [C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...

  2. 第12章方差分析介绍

    第1章统计学入门 第2章频数分布略 第3章集中趋势的测量 第4章变异性 第5章分数的位置及标准化分布 第6章概率和正态分布 第7章概率和样本:样本均值的分布 第8章假设检验介绍 第9章t检验介绍 第1 ...

  3. 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Nginx介绍

    2019独角兽企业重金招聘Python工程师标准>>>  12.1 LNMP架构介绍 和LAMP不同的是,提供web服务的是Nginx 并且php是作为一个独立服务存在的,这个服务叫 ...

  4. java 文档比较功能_Java 12 新特性介绍,快来补一补

    Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Switch 表达式 (JEP ...

  5. C++STL库:String介绍

    C++STL库 学习方法:使用STL的三个境界:能用,明理,能扩展. 今天我们开启一个新主题:C++数据结构之STL库,我们将介绍STL库里常用库的用法与实现过程. 常用库 库名称 所需头文件 数据结 ...

  6. C++ STL 标准模板库介绍与入门

    目录 1.概述 1.1.C++ 标准库 1.2.Boost库 2.STL 版本 2.1.HP 原始版本 2.2.P. J. 实现版本 2.3.RW 实现版本 2.4.SGI 实现版本 2.5.STLp ...

  7. 【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第12章——硬盘介绍和磁盘管理

    本节所讲内容: 12.1 SAS-SATA-SSD-SCSI-IDE硬盘讲解 12.2 磁盘分区工具和挂载 12.3 实战扩展swap分区 12.1 SAS-SATA-SSD-SCSI-IDE硬盘讲解 ...

  8. Java 12 新特性介绍

    Switch 表达式 (JEP 325) 在 Java 12 中,对 Switch 表达式的写法进行了改进,虽然是一个语法糖的改进,也让 Switch 的代码编写变得更加优雅.先看一下在 Java 1 ...

  9. [Spring cloud 一步步实现广告系统] 12. 广告索引介绍

    索引设计介绍 在我们广告系统中,为了我们能更快的拿到我们想要的广告数据,我们需要对广告数据添加类似于数据库index一样的索引结构,分两大类:正向索引和倒排索引. 正向索引 通过唯一键/主键生成与对象 ...

  10. oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例

    c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...

最新文章

  1. 消息服务发送短信,手机接收不到短信解决思路
  2. 预测过去?DeepMind用AI复原古希腊铭文,登Nature封面
  3. 2021年春季学期-信号与系统-第一次作业参考答案-第六题
  4. Modbus协议栈应用实例之四:ModbusTCP服务器应用
  5. 手把手教你整合最优雅SSM框架
  6. 安全问题推动企业采用托管和混合IT服务
  7. 计算机应用基础教材提纲,《计算机应用基础》课程教学大纲
  8. Pycharm 搭建 Django 项目 (非常详细)
  9. 如何打开.json文件
  10. 职场达人教你如何做高效工作汇报!
  11. Privates下载
  12. 企业微信 php sdk,thinkphp5.0集成企业微信SDK
  13. Java企业汽车调度系统
  14. 文件以及文件夹的管理
  15. (Modern Family S01E03) Part 1  PhilClaire  Phil看球赛 Dylan等Haley Clarie说Phil现在依然和Jay呆在一起很不自在
  16. exec函数族的基本用法
  17. Redis学习(三)redis的持久化
  18. 跨域请求的API接口
  19. 全球 43 亿个 IPv4 地址正式耗尽!【智能快讯】
  20. 转发与重定向的区别详解

热门文章

  1. 进程控制1--fork vfork函数
  2. mysql 结构体_mysql模块使用结构体生成数据库表,不识别long类型
  3. python opencv录制视频_如何使用OpenCV和Python录制视频?
  4. 香肠派对电脑版_《香肠派对》是不是除了《和平精英》最成功的吃鸡手游:靠恶搞火了?...
  5. 【转】ABP源码分析二十五:EventBus
  6. 【转】C#中[STAThread]的作用
  7. 【转】ABP源码分析十八:UI Inputs
  8. [你必须知道的.NET]第二十五回:认识元数据和IL(中)
  9. 四年级信息技术认识计算机,四年级信息技术第三课信息工具知多少
  10. 安装python3.7.0的步骤_python 3.7.0 安装配置方法图文教程