C++ List(双向链表)

是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。由于其结构的原因,list 随机检索的性能非常的不好,因为它不像vector 那样直接找到元素的地址,而是要从头一个一个的顺序查找,这样目标元素越靠后,它的检索时间就越长。检索时间与目标元素的位置成正比。虽然随机检索的速度不够快,但是它可以迅速地在任何节点进行插入和删除操作。因为list 的每个节点保存着它在链表中的位置,插入或删除一个元素仅对最多三个元素有所影响,不像vector 会对操作点之后的所有元素的存储地址都有所影响,这一点是vector 不可比拟的。

list 的特点:

(1) 不使用连续的内存空间这样可以随意地进行动态操作;

(2) 可以在内部任何位置快速地插入或删除,当然也可以在两端进行push和pop 。

(3) 不能进行内部的随机访问,即不支持[ ] 操作符和vector.at() ;

Lists将元素按顺序储存在链表中,与向量(vectors)相比,它允许快速的插入和删除,但是随机访问却比较慢.

4.clear() 删除所有元素

5.empty() 如果list是空的则返回true

6.end() 返回末尾的迭代器

7.erase() 删除一个元素

语法:

iterator erase( iterator l

我对STL的一些看法(三)认识list容器相关推荐

  1. STL之序列式容器(三)、vector容器

    一.vector的使用.创建及初始化 vector<T> 容器是包含 T 类型元素的序列容器,和 array<T,N> 容器相似,不同的是 vector<T> 容器 ...

  2. C++STL总结笔记(三)—— 常见算法

    文章目录 一.基本概念 二.程序示例 1.遍历 2. 查找 3. 排序.拷贝.替换 4. numeric相关算法 总结 一.基本概念 算法是STL中很重要的一部分,其功能包括比较,查找,排序,交换,遍 ...

  3. 我对STL的一些看法(一)初步认识STL

    后面一段时间我将会给大家分享我自己学到STL以及应用的时候遇到的问题还有他的一些精髓,可能开始的逻辑会有些乱吧,不过后面还会不断的整理和优化,让自己看明白也让更多的读者看的清楚. 最近刚闲下来,先说说 ...

  4. stl变易算法(三)

    本篇接着前面stl变易算法(一)和stl变易算法(二)继续讲述变易算法.这里将介绍完余下的变易算法,主要有:填充fill.n次填充fill_n.随机生成元素generate.随机生成n个元素gener ...

  5. 我对STL的一些看法(五)初识关联容器

    3关联容器 pair类型 这个是一个简单的标准库类型,该类型在utility头文件中定义,我们来看看他主要的操作: pair<T1 ,T2> p1;     创建一个空的pair对象 pa ...

  6. 我对STL的一些看法(四)认识deque容器

    Deque(双向队列) 是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并 ...

  7. 我对STL的一些看法(二)认识vector容器

    先说vector吧. C++ Vector(向量容器) 是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数 ...

  8. C++ STL: 基本六大部件概览 及 各个容器使用方式和底层实现概览

    文章目录 STL六大部件 容器的使用 Array vector list deque mutiset multimap unordered_multiset/set 使用一个东西,却不明白它的道理,不 ...

  9. [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)...

    首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下: C++ Code  1 2   template <  class _Ty,  c ...

最新文章

  1. 目录忽略_宣传册设计中目录的构思方法和运用
  2. 《CCNP安全防火墙642-618认证考试指南》——1.4节防火墙技术
  3. boost::msm::mpl_graph::adjacency_list_graph相关的测试程序
  4. 云顶之弈机器人法爆_云顶之弈10.16b机器人阵容推荐 云顶之弈10.16b机器人娱乐阵容玩法攻略...
  5. 图片不显示问题 图片url监测改变问题
  6. docker 获取镜像
  7. iOS线程生命周期的监控
  8. Java中J.U.C扩展组件之ForkJoinTask和ForkJoinPool
  9. 数据科学包15-matplotlib详细介绍
  10. cmd无法运行python_为什么CMD无法运行python程序
  11. eviews建立时间序列模型_Eviews软件做时间序列分析?
  12. tecplot批量导出图片_科研画图工具Tecplot使用教程
  13. 《计算机科学概论(第12版)》—第0章0.2节计算机器的由来
  14. 教师信息管理c语言程序设计,信息技术教师招聘考试真题(附答案版)
  15. FAR花菜一个前所未有的机遇
  16. mysql explain关键字解析
  17. Entry name ‘res/layout/test_toolbar.xml‘ collided
  18. 06 - 微信公众号的菜单配置
  19. Hive 3.x详细笔记
  20. 《Linux就该这么学》学习笔记

热门文章

  1. Linux NULL定义
  2. Kamailio 简介
  3. socket 编程入门教程(一)TCP server 端:5、创建监听嵌套字
  4. 禅道——需要我们斟酌
  5. java se好用吗_利用 Java SE 7 更好地管理资源
  6. python json数据格式数组内元素递增赋值_利用Python实现JSON格式数据的编码与解码操作...
  7. excel 2007 vba与宏完全剖析_Excel怎么保护自己的劳动成果?强制用户启用宏,再加上这一步...
  8. activity 点击后传递数据给fragment_Fragment 新特性 : Fragment Result API 使用以及源码分析
  9. 【转】修饰符new将父类中的该方法隐藏掉有什么意义 不隐藏有什么弊端
  10. 使用VS code 创建 Azure Functions,从blob触发,解析,发送至Service Bus