【C++】迭代器的类型

  迭代器本质上是什么?当然,任何一种特定的迭代器都是某种类型的对象。不过,迭代器的类型非常多,毕竟每种迭代器都是与某种特定容器类型相关联的。它需要保存一些必要的信息,以便我们对容器执行某些特定的任务。因此,有多少种容器就有多少种迭代器,有多少中特殊要求就有多少种迭代器。

  vector的迭代器可能就是一个普通指针,因为就引用vector中的元素而言指针再恰当不过了:或者,vector的迭代器也可以实现为指向vector(存储空间的起始地址)的指针再加上一个索引:采用这种方式便于进行安全检查。

  list迭代器必须是某种比普通指针更复杂的东西,这里的普通指针是指那里指向某个元素的指针。因为list的元素通常不知道下一个元素在哪里,所以list迭代器应该指向某个链接。

  所有迭代器类型的语义及其操作的命名都是相似的。例如,对任何迭代器使用使用++运算符都会得到一个指向下一个元素的迭代器,而*运算符则得到迭代器所指的元素。实际上,任何符合这些简单规则的对象都能被看成是迭代器。用户不需要知道某个特定类型的迭代器,迭代器“知道”它自己的迭代器类型是什么,而且都能通过规范的名字iterator和const_iterator来正确声明自己的类型。例如,list<Entry>::iterator是list<Entry>的迭代器类型,程序员很少需要操心“这些类型是如何定义的?”等细节问题。

 

转载于:https://www.cnblogs.com/bootblack/p/11506168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值