前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >c++必修:容器list

c++必修:容器list

作者头像
用户11290664
发布2025-03-16 20:37:08
发布2025-03-16 20:37:08
500
举报
文章被收录于专栏:学习学习

1介绍

带头双向循环的结构,类似我们以前学的链表吗,他物理结构不是连续 的,逻辑顺序是连续的。 这里的自定义类型析构要释放每一个空间

这里构造也是四个构造,和上一节vector一样的。

2访问

这里不实现[],因为它的物理空间不是连续的。因此不能用[],没有重载这个功能。

3插入

list支持头插头删,也支持尾插尾删,insert和erase和vector一样是迭代器访问位置的。

4push_back和emplace_back

这里value_type是 T

我们写一个Pos作为模板,那么push_back就可以串Pos对象 和隐式类型 转换 成Pos的对象

这里({1,2})中{1,2}作为引用是value_type类型的进行隐式类型转换

这里 Args&&… args是可变模板参数 我们也可以传pos对象让它推模板

我们在这里就不能传{1,2}了 ,因为类型不确定{1,2}作为形参的时候会被当成initializer_list的类型,所以出错,我们用(1,2)的形式就是直接构造会更加高效,不要先构造成Pos再拷贝构造了。

5特殊的接口

这里把list里的元素先排序,再去掉重复的元素。

这个是find和 erase的结合

这个结点是把x链表 里的值转到position位置,有三个版本可以是一段区间也可以是全部,插入的的链表也可以是自身

6list的排序

两种 方法

1list的内置接口sort是升序, 2要降序是要list1.sort(greater< int >())来降序序,vector没有sort接口,只能调算法库里面的。其中greater< int >是匿名对象,类似 于 >这个符号。 为什么list不能调算法库里面的? 我们要先普及一下迭代器从功能上分类

算法库里面的sort只支持随机迭代器,sort底层是快排,list迭代器 不支持-,不能实现 一般随机单向迭代器支持的双向 和随机 迭代器支持,反之不行,那么泛用性就是随机>双向>单向

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1介绍
  • 2访问
  • 3插入
  • 4push_back和emplace_back
  • 5特殊的接口
  • 6list的排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档