admin管理员组文章数量:1446760
c++必修:容器list
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不能调算法库里面的? 我们要先普及一下迭代器从功能上分类
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-15,如有侵权请联系 cloudcommunity@tencent 删除对象算法c++容器list算法库里面的sort只支持随机迭代器,sort底层是快排,list迭代器 不支持-,不能实现 一般随机单向迭代器支持的双向 和随机 迭代器支持,反之不行,那么泛用性就是随机>双向>单向
本文标签: c必修容器list
版权声明:本文标题:c++必修:容器list 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748266956a2834699.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论