【C++:list】

list概念

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

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

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

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

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

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

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

相关推荐
亚林瓜子6 小时前
nodejs里面的百分号解码之URLSearchParams
开发语言·javascript·ecmascript·node·url·百分号编码
superman超哥6 小时前
仓颉语言中包与模块系统的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
x70x806 小时前
C++中不同容器的用法及接口(vector / deque / stack / queue / priority_queue)
开发语言·c++
再__努力1点6 小时前
LBP纹理特征提取:高鲁棒性的纹理特征算法
开发语言·人工智能·python·算法·计算机视觉
lsx2024066 小时前
Bootstrap4 卡片布局指南
开发语言
superman超哥6 小时前
仓颉热点代码识别深度解析
开发语言·后端·python·c#·仓颉
是一个Bug7 小时前
Java主流框架面试题(一)
java·开发语言
百***07457 小时前
Step-Audio-2 API 中转调用解决方案:2025 年版
开发语言·php
情爱少有真诚7 小时前
Java集合框架:数据存储与操作的利器
java·开发语言·经验分享·课程设计·ai编程
我居然是兔子7 小时前
基于字符串的专项实验:解锁Java String类的隐藏细节
java·开发语言