C++的list数据结构

操作方法

  • 01

    双向循环链表list list是双向循环链表,每一个元素都知道前面一个元素和后面一个元素。在STL中,list和vector一样,是两个常被使用的容器。和vector不一样的是,list不支持对元素的任意存取。list中提供的成员函数与vector类似,不过list提供对表首元素的操作push_front、pop_front,这是vector不具备的。和vector另一点不同的是,list的迭代器不会存在失效的情况,他不像vector会保留备份空间,在超过容量额度时重新全部分配内存,导致迭代器失效;list没有备份空间的概念,出入一个元素就申请一个元素的空间,所以它的迭代器不会失效。list初始化时,申请的空间大小为6,存放下了data中的6个元素,当向lidata插入第7个元素“6”时,list申请新的节点单元,插入到list链表中,数据存放结构如图1所示:list每次增加一个元素,不存在重新申请内存的情况,它的成本是恒定的。而vector每当增加关键元素的时候,都需要重新申请新的更大的内存空间,会调用元素的自身的复制构造函数,存在构造成本。在销毁旧内存的时候,会调用析构函数,存在析构成本。所以在存储复杂类型和大量元素的情况下,list比vector更有优势!

(0)

相关推荐

  • [ext4]12分配机制-关键的数据结构

    在块分配机制中,涉及到几个主要的数据结构。 通过ext4_allocation_request描述块请求,然后基于块查找结果即上层需求来决定是否执行块分配操作。 在分配过程中,为了更好执行分配,记录一 ...

  • 数据结构-队列

    队列也是一种和限定的线性表,他和栈正好相反,同样这和数据结构在计算机的作用也是非常大的,我们可以通过队列发现好多其他的数据结构和他有关系,同样在我们的生活中也会发现好多这样的,最好理解的是,我们在吃饭 ...

  • 对数据结构概念的总结

    系统的显示数据结构中各种概念之间的关系. 操作方法 01 1.数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合.用下面这张图表示各元素之间的关系: 02 2.数据结构的分类:

  • 数据结构顺序表的删除

    数据结构顺序表的删除 操作方法 01 题目要求: 实现一个线性表,对一个n不超过1000的线性表进行删除操作. 输入 第一行有一个整数n,表示线性表的大小,第二行有n个整数,分别是list1,list ...

  • C语言版数据结构:[1]线性顺序表

    在数据结构中,线性表是入门级数据结构,线性表又分为顺序表和链表,这一节我们就说一下线性顺序表的C语言实现.坐标为您分享. 操作方法 01 第一步:线性顺序表的创建. 线性顺序表是存储在一个连续的数组中 ...

  • C语言版数据结构:[2]链表的建立。

    链表其实是线性表的链接存储方式,这种方式下的存储单元可以是连续的,也可以是不连续的.这里我们主要讨论链表的尾插法,头插法和尾插法基本类似.坐标为您分享. 操作方法 01 一.链表的建立分为带头结点的头 ...

  • 数据结构之线性表

    N个数据元素的有限数列,一种最简单最常见的数据结构,比较复杂的线性表中一个数据元素可能包含多个数据项,这种情况下把数据元素称之为记录,包含大量记录的线性表称为文件. 操作方法 01 线性表的顺序表示和 ...

  • 数据结构《栈和队列》

    栈是限定在表尾进行插入和删除操作的线性表,表头端称为栈底.(LIFO后进先出的特点) 队列是一种先进先出的线性表(FIFO),只允许在表的一端进行插入,在另一端进行删除,插入一端称为队尾,删除一端称为 ...

  • 数据结构二叉树的遍历

    二叉树前中后续遍历,先了解基本概念,再学二叉树的遍历. 操作方法 01 首先,来认识树的相关概念.结点的度是该结点有多少个孩子结点就是该结点的度(简单来说,一个结点向下有几根出去的线,度就是几).如图 ...