泛型编程之迭代器 Iterators

本文介绍了STL中的迭代器在泛型编程中的重要性,通过对比不同类型的迭代器(Input、Output、Forward、Bidirectional、Random Access)的特点,解释了它们在数据结构和算法中的应用,并探讨了迭代器与算法的关系,为读者提供了一个全面的迭代器知识概览。
摘要由CSDN通过智能技术生成

接触迭代器主要是在接触和使用STL时候开始的。作为泛型编程的良好实践,STL的迭代器有着非常显著的代表性。

最初,我并不了解迭代器的作用,甚至一直很排斥使用它。但随着逐步开始了解STL,慢慢开始了解了迭代器的意义以及重要性。本文主要是就自己所学所了解做一个简单的整理。本文内容参考整理自《泛型编程与STL》。

一、迭代器的重要性

迭代器,又称作泛型指针。顾名思义,迭代器就是模仿指针来实现的。有些情况,它就是指针。比方说vector,由于它使用的是一整块连续空间,所以直接拿其指针就可以作为随机迭代器使用,是非常强力的。

那么为什么我们不直接用指针,而一定要弄一个迭代器出来呢?

因为它是数据结构与算法之间的重要接口。以STL中的算法find为例,它要求可以遍历某个数据结构并读取其中元素的值。如果我们只提供指针给它,那么它针对vector要写一个算法,针对list链表又要重新写一个算法。而实际上,算法对这两种数据结构的要求是相同的:按某个线性顺序遍历并读取元素。因此我们可以把vector和list的遍历的这种特性抽象出来,做成迭代器,这样算法就可以保证它的通用性和简洁性、有效性。对于vector的抽象很简单,只需要把其指针拿出来直接用即可。但对于list,我们就需要在iterator类中对++操作、*操作进行运算符重载,以模仿指针行为。

对于不同的数据结构,迭代器的复杂程度是截然不同的,而能实现的功能也是不同的。与此同时,我们也要注意到不同的算法对迭代器的要求也是不同的。因此,我们要了解迭代器的分类,以及不同的迭代器和什么样的算法是匹配的,这样才能准确的使用STL库&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值