内部原理

计算机每一个比特位,都有两种表示,0和1.一个字节,8个比特位,最大值255,最小值0.

2^10=1k                2^20=1M      2^30=1G

32位操作系统,一个地址值用4个字节来记录。

32位的地址,最大值2^32-1,最小值为0.  2^32是4G,所以

 

你已知道指针,指针有  几种动作,*  解引用,  ++自增,  - -减减,两个同类型  指针  相减。指针  +加整数。指针  +加整数。迭代器,是一个有指针   动作能力   的对象 为什么要生产     迭代器    呢?因为很多的算法,目的都是  操纵数据,而指针  是操作数据   最强大的。。那么能不能构造一种对象?拥有指针的这种优点?以后操作数据    都通过这种对象去  操纵  数据,而且迭代器拥有指针所没有的优点,因为他是对象,他能拥有属性,所以它能携带更多的信息。这些携带的信息能提供给算法实现更强大的功能。


迭代器是一个对象,那么迭代器   把多少信息   集中在    对象里面呢?我们的计算机科学家们经过研究,得到了那么几种共识。。迭代器的类型,iterator_catagory  是必须提供的。

数据结构,你就明白了,有数组,有双向链表,这些数据结构就迫使操纵它们的指针,行为受限,数组的指针,可以随机访问宿主的任何一个元素,双向链表,它的指针可以向前移动,也可以向后移动,而单向链表,它的指针只能向前移动,那么这就构成了三种类型的迭代器,

而我们对数据的超重,有的时候需要控制读写的权限,比如有的数据只能读,比如有的数据只能写,那么这就又出现了两种迭代器的类型。

这五种迭代器,就构造了这样一种继承关系这一段代码,他们都是一个空类,空类的意思就是说,他们只有类的名称,而没有类

的属性。而且空类之间也是可以继承的,

这就把5种迭代器,相互之间的关系给确定了下来

迭代器,它的功能就相当于指针,

既然是指针,那么她就会指向

要被操纵的数据,

这个数据是什么类型的?

这种信息也是可以放入迭代器里面的,这

那么就产生了一个问题,两个指针相减,它的值是什么数据类型

就是valueType的来由。。

指针有一个动作,是++++这个动作,表示指针,指向下一个  要操纵的数据。。

++,我们在指针的时代,

就先指明了   ++   等价于   +1

那么回过头去看两个指针相减,
两个指针相减得出的结果,就是一个整数n,
 
这个整数n,表明了p1经过n次++操作

实际上,diffenceType的本质就一个整型int

迭代器既然是操纵数据,

虽然迭代器是有指针动作的对象,但是迭代器毕竟不是指针,

然而有的时候,我们需要知道,迭代器指向的数据    的  指针是什么类型?

这就是pointer类型的来由。。

我们有时候要知道,  迭代器 指向的数据  的引用类型。


这就是reference的来由。。

你要死死记住一个真相,迭代器是一个对象,只是有指针的动作,


迭代器并不是指针,

但是迭代器可以当成指针来用。。

迭代器是对象, 

  他在对象里面集中了很多的信息,

这种手法    就是   triats
 

操纵数据的步骤,,就是我们俗称的算法,

我们把这个步骤抽象出来,就是policy

 

你已经看到了模仿指针的对象,

我们的计算机科学家,又提出了一种想法,

能不能让对象    模仿    函数的动作?

这就是   仿函数对象的   来由。 

对象如何模仿函数的动作呢?

这就是   重载  操作符

operator ()

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值