【C++:list】

list概念

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

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

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

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

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

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

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

相关推荐
CoderYanger3 分钟前
Java SE——12.异常(≠错误)《干货笔记》
java·开发语言
Data_agent12 分钟前
1688获得1688店铺所有商品API,python请求示例
java·开发语言·python
一晌小贪欢17 分钟前
【Python办公】-图片批量添加文字水印(附代码)
开发语言·python·图片水印·python水印·python添加水印·图片添加水印
Yeats_Liao20 分钟前
CANN Samples(十三):Ascend C 算子开发入门
c语言·开发语言
越来越无动于衷21 分钟前
Java 实现 WebService(SOAP)联网调用:从原理到实战
java·开发语言
悦悦子a啊28 分钟前
将学生管理系统改造为C/S模式 - 开发过程报告
java·开发语言·算法
万邦科技Lafite41 分钟前
一键获取淘宝关键词商品信息指南
开发语言·数据库·python·商品信息·开放api·电商开放平台
fqbqrr1 小时前
2512C++,clangd支持模块
开发语言·c++
han_hanker1 小时前
泛型的基本语法
java·开发语言
Jurio.1 小时前
Python Ray 分布式计算应用
linux·开发语言·python·深度学习·机器学习