【C++:list】

list概念

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

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

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

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

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

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

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

相关推荐
leo__5201 分钟前
MATLAB 实现 基分类器为决策树的 AdaBoost
开发语言·决策树·matlab
老朱佩琪!6 分钟前
Unity原型模式
开发语言·经验分享·unity·设计模式·原型模式
毕设源码-郭学长6 分钟前
【开题答辩全过程】以 基于JAVA的车辆违章信息管理系统设计及实现为例,包含答辩的问题和答案
java·开发语言
while(1){yan}7 分钟前
UDP和TCP的核心
java·开发语言·网络·网络协议·tcp/ip·udp
后端小张12 分钟前
【Java 进阶】深入理解Redis:从基础应用到进阶实践全解析
java·开发语言·数据库·spring boot·redis·spring·缓存
木心爱编程20 分钟前
【Qt 5.14.2 新手实战】QTC++入门筑基——10 分钟做个文本编辑器:QLineEdit + QTextEdit 核心用法
java·c++·qt
肆悟先生20 分钟前
3.15 引用类型
c++·算法
码海踏浪31 分钟前
JMeter 时间函数合集
开发语言·python
麦麦鸡腿堡32 分钟前
Java_反射暴破创建对象与访问类中的成员
java·开发语言
不会c嘎嘎32 分钟前
深入理解QT之信号和槽
开发语言·qt