当前位置:   article > 正文

▲什么是迭代器?迭代器有什么作用?

迭代器

什么是迭代器?

先说说它是干嘛的吧!迭代器的作用是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。没错!这和访问数组这个序列的指针一样,因为数组范围内的指针就是迭代器的一种。


指针和迭代器有什么区别呢?

1.指针针是C语言里面就有的东西,而迭代器是C++里面才有的

2.指针用起来灵活,效率高。迭代器功能更丰富一些

3.指针通常用来访问的是序列的元素,但不是所有的容器都会在连续的内存空间上保存数据。所以,对于这些容器我们不能单纯地使用指针作为迭代器,而是针对每一种容器,都会有专门配对的迭代器。

4.指针用起来灵活,效率高。迭代器功能更丰富一些,c++的stl里面很多算法都是基于迭代器的,一部分算法的参数可以传递指针作为迭代器使用。


迭代器怎么使用?

对于所有的迭代器,它们的使用方法和指针一样,比如自增(++),解引用(*)。除了数组以外,在大部分的容器中都会提供成员函数beget()(在类中创建,类是C++中对于C语言中的结构体的延伸),用来获取容器开始位置的迭代器,会提供成员函数end(),用来获取容器结束位置的迭代器。


如何理解begin()和end()这两个返回值为迭代器的函数?

begin()相当于数组中首元素地址,end()相当于末元素后一位置的地址(首元素地址+元素数量)


迭代器五大种类及功能解析

InputIterator(输入迭代器):只要求支持拷贝、自增和解引访问。
OutputIterator(输出迭代器):只要求支持拷贝、自增和解引赋值。
ForwardIterator(向前迭代器):同时满足 InputIterator 和 OutputIterator 的要求。
BidirectionalIterator(双向迭代器):在 ForwardIterator 的基础上支持自减(即反向访问)。
RandomAccessIterator(随机访问迭代器):在 BidirectionalIterator 的基础上支持加减运算和比较运算(即随机访问)

使用迭代器*样例展示

vect<int>是一种数据结构—我们熟悉的数组(亦称列表)

vect<int>::iterator定义迭代器iter

(迭代器的类型就为container::iterator)(container是某个STL容器

arr.begin()返回值指向首元素的为迭代器的函数

更多有关迭代器的函数请看下一栏



常用四大返回值为迭代器的函数


1.begin()/cbegin()
返回指向首元素的迭代器,其中 *begin = front。
2.end()/cend()
返回指向数组尾端占位符的迭代器,注意尾端占位符是没有元素的,不能进行解引用。
3.rbegin()/crbegin()
返回指向逆向数组的首元素的逆向迭代器,可以理解为正向容器的末元素。
4.rend()/crend()
返回指向逆向数组末元素后一位置的迭代器,对应容器首的前一个位置,没有元素。

使用返回值为迭代器的函数*样例展示

sort()和reverse()都是STL提供的算法函数

可以大大提高写代码的效率哦!


☆  刚刚学习的迭代器,怕忘记所以来做的笔记,欢迎大家一起交流~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/179610?site
推荐阅读
相关标签
  

闽ICP备14008679号