C++迭代器在链表中的简单实现

本文介绍了C++中迭代器的概念及其作用,详细阐述了如何设计和实现一个iterator类,包括数据成员、构造函数以及重载运算符。接着讨论了iterator类在链表类中的使用,以及在其他容器类中如何通过运算符访问。文章还通过实例展示了函数返回类类型时编译器如何隐式创建对象。
摘要由CSDN通过智能技术生成

什么是迭代器?

An iterator is any object that, pointing to some element in a range of elements (such as an array or a container), has the ability to iterate through the elements of that range using a set of operators (with at least the increment (++) and dereference (*) operators).

那么迭代器有什么用呢?,在之前的文章中,实现了单双链表的基本功能。使其可以以一个个的节点来分布存储元素,并有一系列的相关操作。但我们定义一个数据结构,就是定义一系列数据的存储类型并合理的使用它们。那么在定义完成之后,开始使用自定义的数据结构时,我们发现当我们需要遍历访问自定义的数据结构时我只能通过下标运算符来访问,而且对于不同的容器我都需要重载[]运算符,那么能不能定义一种类型可以遍历访问所有容器的类型呢?
——答案是有,那就是定义迭代器。

iterator类实现前的分析:

首先对iterator类的设计进行分析:

  1. 数据成员的类型与数据成员:
    根据迭代器的定义,至少实现的功能是*++这两个运算符,其中使用对迭代器对象使用*运算符可以获取容器当前的值。那么根据这样的情况来看迭代器的数据类型应该为Node<T>*,需要定义此类型的数据成员。

  2. 构造函数:
    构造函数的目的是初始化类中的数据成员,所以要使用构造函数指明

  3. 成员函数与运算符重载:
    需要重载++*运算符,实现迭代器的基本核心功能。按照语义,重载运算符的函数返回类型必须是迭代器类型。

iterator类的实现:

  • 数据成员的定义:
template<typename T>
class iterator
{
   
private:
	 Node<T>* node;
 	//other codes
 }

因为迭代器也是一个指向Node类型的指针,所以把iterator类中声明一个Node<T>的数据成员。

  • 构造函数:
iterator
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值