概述
什么是迭代器?
先说说它是干嘛的吧!迭代器的作用是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。没错!这和访问数组这个序列的指针一样,因为数组范围内的指针就是迭代器的一种。
指针和迭代器有什么区别呢?
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提供的算法函数
可以大大提高写代码的效率哦!
☆ 刚刚学习的迭代器,怕忘记所以来做的笔记,欢迎大家一起交流~
最后
以上就是爱笑发带为你收集整理的▲什么是迭代器?迭代器有什么作用?的全部内容,希望文章能够帮你解决▲什么是迭代器?迭代器有什么作用?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复