C++迭代器和泛型编程的理解

今天读到了primer plus的泛型编程迭代器部分(16章第四小节),稍作记录

前面阅读的部分,讲了很多继承,友元,还有模板类的概念;这些都有一个共同点,那就是提高代码的重用性;当然友元也不仅仅是这一方面,还有在数据方面的保护和隐私权限考虑等。从提高代码的重用性来说,这也是 泛型思想和面向对象思想的 共通点之一。

原文:面向对象编程注重编程的数据方面,泛型注重于编程的算法方面。他们的共同点有代码重用和抽象。

然后我看了一下后文,泛型关注于算法的实现,比方说,实现find()函数,我要独立于数据结构,也就是说对于链表和数组,可以用同一个find函数,那就有问题了,用什么去统一不同数据结构的遍历呢?沿着这个问题引出了 --迭代器的概念(迭代器也被称为广义的指针),也就是说为了在不同的数据结构抽象出共同的算法,我需要其他的中介--迭代器(指针是一种),一道这,我想起了,这不就可以在每个数据结构的类里面,定义一个实现  迭代器的内置类不就行了吗?貌似看着还行,继续看下去,求证下。

迭代器这里分为了五种,无非是控制读写的全写,单双向,随机访问的搭配,形成搭配的层次结构的迭代器;只需要记住两个关键点就行了:

1.迭代器是为了泛型编程服务的,泛型编程讲究的是一个抽象的算法,算法需要操作数据结构啊,那我算法需要如何从不同的数据结构抽象相同的操作,中介的任务就是你每一个数据结构所匹配的迭代器所要完成的事情嘛;

2.然后第二个就是,如无必要,勿增实体了,如果我只要求 :只读,或者只写,单向访问。。。某一个操作,你就不用全都给我这些功能,这也是数据安全考虑吧

3.迭代器比较重要的两个特性:解除引用(*)和i++操作了(这一点不关键)

当然迭代器的五种分类还是留一个影响吧:输入迭代器,输出迭代器,正向迭代器,双向迭代器,随机访问迭代器 ;

不像人话,举个栗子:输入迭代器----为算法抽象出仅仅包含不同数据结构的数据输入的广义指针。(凑合理解一下啊)

下一个问题:迭代器的概念如何落实到c++的特性上呢?

 

你可能感兴趣的:(c++学习)