【C++十二章】List

【C++第12章】List

List的介绍🧐

  list是可以在常数范围内的任意位置进行插入和删除的序列式容器,它的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在结点中通过指针指向前一个元素和后一个元素。

  与vector相比,list更适合在任意位置插入、删除元素,但是排序以及随机访问效率不如vector。

迭代器的区别🧐

  迭代器在功能上的区别为正向反向、const和非const,在性质上一样有区别——迭代器在底层分为了单向、双向和随机迭代器,单向指只能向前遍历(forward_list、哈希表),双向可以前后遍历(list、红黑树),而随机迭代器既可以前后遍历,又可以进行加减(vector,dequeue,string)。

  所以list无法使用算法库里面的sort,因为算法库的sort需要传随机迭代器,而list类型不匹配,只能用list自己的sort。

image-20240810202256358

image-20240810203335224

List的基本使用🧐

  由于容器各个函数使用大差不差,所以仅介绍一些特殊一点的函数

sort🔎

  list的sort默认是升序(less),如果要排降序需要用到仿函数greater

Pasted image 20240731095405

  由于list的sort效率不如vector(list底层是归并,vector是快排),所以当数据量很大时,我们可以将数据拷贝到vector,排完序再拷回来,效率会得到提高。

Pasted image 20240731101427

Pasted image 20240731101928

merge🔎

  归并两个链表,取小的尾插,需要两个链表有序

Pasted image 20240731102335

unique🔎

  双指针排重,也需要有序,不然会排不干净

Pasted image 20240731102531

remove🔎

  给定一个值进行删除,如果这个值本来就不存在就不会有效。

Pasted image 20240731102836

splice🔎

  数据转移,被转移的对象会对应清除数据。

Pasted image 20240731103818

结尾👍

  以上便是list的全部介绍,如果有疑问或者建议都可以私信笔者交流,大家互相学习,互相进步!🌹

  • 22
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A.A呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值