引入list迭代器:
我们之前学习了 string、vector的遍历,使用迭代器即可,我们直接使用原生指针++,解引用即可走到存储下一个数据的位置,和取到下一个数据 --原因是string、vector是一段连续的物理空间
那么我们的list并表示一段连续的物理空间了,不能简单的使用原生指针++,解引用来遍历list。
上面图的分析为什么之前的迭代器不适用在list上的,这也就是为什么我们要特定的来学习list的迭代器
-------------------------------------------------------------------------------------------------------------------------------
对原迭代器进行改造
那么我们来想一想我们应该怎么来改进迭代器来遍历list呢???
我们想想C++的优势是什么呢????
不就是类封装和运算符重载嘛
我们可以将迭代器封装成结构体或类对象。这样我们可以通过调用迭代器来调用类或结构体内封装的函数
我们在根据需要的迭代器需要的功能去实现封装就可以了
实现!=运算符的重载 通过判断迭代器对象内存的节点地址是否相同
实现* 解引用 operator*
通过迭代器对象成员函数存储的节点地址去取到节点内存的数据
实现前置 ++
通过迭代器往前走,怎么往前走,就是通过改变迭代器对象内成员的存储的节点地址,改成下一个节点的地址
上面就是我们最基本的list迭代器封装了,还有别的功能可以自己实现