【C++:list】

list概念

  • list是一个带头的双向循环链表,
  • 双向循环链表的特色:每一个节点拥有两 个指针进行维护,俩指针分别为prev和next,prev指该节点的前一个节点,next为该节点的后一个节点

list的底层实现中为什么对迭代器单独写一个结构体进行封装?

list中的原生指针并不能满足迭代器的需要(迭代器需要通过++或者--的操作符对链表进行遍历)于是重新写一个关于迭代器的类,重载操作符,完善迭代器的需求

链表的空间并不是连续的,如果对原生指针进行++操作并不会拿到下一个节点的地址,于是封装一个类,重载运算符

疑问:重载运算符咋个重载?

在顺序表中,迭代器++就能到达下一个空间,但是链表这里到达下一个空间需要用list中的next指针,重载++,--运算符如下:

重载操作符来管理迭代器的行为

相关推荐
敲上瘾5 小时前
Linux系统C++开发环境搭建工具(二)—— etcd 使用指南
linux·c++·etcd
流星白龙5 小时前
【Qt】1.安装QT
开发语言·qt
励志不掉头发的内向程序员5 小时前
【Linux系列】解码 Linux 内存地图:从虚拟到物理的寻宝之旅
linux·运维·服务器·开发语言·学习
深盾科技6 小时前
C/C++逆向分析实战:变量的奥秘与安全防护
c语言·c++·安全
superxxd7 小时前
跨平台音频IO处理库libsoundio实践
开发语言·qt·音视频
ajassi20009 小时前
开源 C++ QT QML 开发(二十)多媒体--摄像头拍照
c++·qt·开源
_OP_CHEN9 小时前
C++基础:(十二)list类的基础使用
开发语言·数据结构·c++·stl·list类·list核心接口·list底层原理
ONE_PUNCH_Ge12 小时前
Go 语言变量
开发语言
幼稚园的山代王12 小时前
go语言了解
开发语言·后端·golang
晚风残12 小时前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer