【C++:list】

list概念

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

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

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

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

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

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

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

相关推荐
追逐梦想的张小年7 分钟前
JUC编程03
java·开发语言·idea
派葛穆9 分钟前
Python-PyQt5 安装与配置教程
开发语言·python·qt
每天要多喝水10 分钟前
nlohmann/json 的使用
c++·json
小乔的编程内容分享站17 分钟前
记录使用VSCode调试含scanf()的C语言程序出现的两个问题
c语言·开发语言·笔记·vscode
toooooop828 分钟前
php BC MATH扩展函数计算精度-第三个参数
开发语言·php
蓁蓁啊31 分钟前
C/C++编译链接全解析——gcc/g++与ld链接器使用误区
java·c语言·开发语言·c++·物联网
weixin_3077791338 分钟前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
foundbug9991 小时前
基于C#的OPC DA客户端实现源码解析
开发语言·c#
yuezhilangniao1 小时前
Next.js 项目运维手册-含-常用命令-常见场景
运维·开发语言·reactjs
D_evil__1 小时前
【Effective Modern C++】第四章 智能指针:19. 对于共享资源使用共享指针
c++