C++STL剖析(三)—— list的概念和使用

文章目录

  • 前言
  • 1. list的介绍
  • 2. list的常见构造
  • 3. list的迭代器
  • 4. list的增删查改
    • assign
    • push_front
    • pop_front
    • push_back
    • pop_back
    • insert
    • erase
    • swap
    • resize
    • clear
  • 5. list的元素访问
    • front
    • back
  • 6. list的空间容量
    • empty
    • size
    • max_size
  • 7. list的操作函数
    • splice
    • remove
    • remove_if
    • unique
    • merge
    • sort
    • reverse
  • 8. list与vector的对比


前言

由于长度不可变,数组的实用性大大降低。 在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。

为了解决此问题,诞生了一种被称为「列表 List」的数据结构。列表可以被理解为长度可变的数组,因此也常被称为「动态数组 Dynamic Array」。列表基于数组实现,继承了数组的优点,同时还可以在程序运行中实时扩容。在列表中,我们可以自由地添加元素,而不用担心超过容量限制。

1. list的介绍

  • list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
  • list 的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。
  • list 与 forward_list 非常相似:最主要的不同在于 forward_list 是单链表,只能朝前迭代,已让其更简单高效。
  • 与其他的序列式容器相比(array,vector,deque),list 通常在任意位置进行插入、移除元素的执行效率更好。
  • 与其他

你可能感兴趣的:(深入C++世界,c++,面向对象,STL)