二 迭代器(一)迭代器类属

本文详细解释了迭代器的概念,包括其与指针的区别、STL容器中的begin()和end()函数的作用、迭代器的类型(读/写、只读)、以及迭代器的分类(Input、Output、Forward、Bidirectional、RandomAccess)。此外,还介绍了STL容器中迭代器的两种主要类型:container::iterator和container::const_iterator。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 基本概念:


(1)迭代器:是一个“可遍历STL容器内全部或部分元素”的对象。一个迭代器用来指出容器中的一个特定位置。

与指针的不同之处:迭代器是个所谓的smart pointers,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构,因此,每一种容器都必须提供自己的迭代器,所以打算使用某种容器的迭代器不需要含入专门的头文件。


(2)begin()和end()形成了一个半开区间,其优点:1.为“遍历元素时,循环的结束时机”提供了一种简单的判定依据,只要尚未到达end(),循环就可以继续进行。2. 不必对空空间采取特殊处理方法,空空间的begin()等于end()。


(3)任何一种容器都定义有两个迭代器型别:

1. container::iterator:这种迭代器以“读/写”模式遍历元素。

2. container::const_iterator:这种迭代器以“只读”模式遍历元素。


(4)迭代器的类属:

根据能力不同,迭代器被划分为五种不同的类属。

STL预先定义好的所有容器,其迭代器均属于:双向迭代器和随机存取迭代器。



1. Input迭代器:

Input迭代器只能一次一个向前读取元素,按此顺序一个个传回元素值。注意:Input迭代器只能读取元素一次。

下图列出Input迭代器的各种操作行为:


2. Output迭代器:

Output迭代器和Input迭代器相反,其作用是将元素之一个个写入,只能一个元素一个元素的赋新值,而且不能使用Output迭代器对同一序列进行两次遍历。

下图列出Output的各种操作:


3. Forward(前向)迭代器

Forward迭代器是Input迭代器和Output迭代器的结合,具有Input迭代器和Output迭代器的大部分功能。

和Input迭代器及Output迭代器不同,Forward迭代器可以多次指向同一群集中的同一元素,并能多次处理同一元素。


4. Bidirectional(双向)迭代器:

Bidirectional迭代器在Forward迭代器的基础上增加了回头遍历的能力,即它支持递减运算符。


5. Random Access(随机存取)迭代器

Random Access迭代器在Bidirectional迭代器的基础上增加了随机存取的能力。因此,它必须提供“迭代器算数运算”,也就是它可以加减某个偏移量,能处理距离问题,并运用诸如<和>的相互关系进行比较。(注意:没有两个迭代器的加法,指针也一样。)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值