【C++:list】

list概念

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

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

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

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

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

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

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

相关推荐
sulikey7 分钟前
C++ 四十年:一段跨越时代的语言旅程
c++·c++40周年
m***D28610 分钟前
JavaScript在Node.js中的内存管理
开发语言·javascript·node.js
我叫张小白。10 分钟前
JavaScript现代语法梳理:ES6+核心特性详解
开发语言·javascript·typescript·es6
-森屿安年-32 分钟前
LeetCode 283. 移动零
开发语言·c++·算法·leetcode
寻找华年的锦瑟37 分钟前
Qt-FFmpeg案例(0基础,包含环境配置)
开发语言·qt·ffmpeg
tanxiaomi1 小时前
Spring、Spring MVC 和 Spring Boot ,mybatis 相关面试题
java·开发语言·mybatis
浮尘笔记1 小时前
Go并发编程核心:Mutex和RWMutex的用法
开发语言·后端·golang
散峰而望1 小时前
C++数组(一)(算法竞赛)
c语言·开发语言·c++·算法·github
wjs20241 小时前
C++ 指针
开发语言
20岁30年经验的码农2 小时前
Java Sentinel流量控制与熔断降级框架详解
java·开发语言·sentinel